已經半年沒有在知乎上寫東西了。於我而言寫文章是為了寫給自己,寫下此時所感,寫給未來的自己。

這個夏天,我有幸參加了創新工場和北京大學舉辦的人工智慧訓練營,Deecamp. 在未名湖畔賞景,聽李開復,吳恩達老師的親自授課,和一群全國最優秀的學生做課題,度過了一個特別的夏天。

伴隨這個夏天的,是秋招找工作,投簡歷,面試,筆試和無數次的等待和自我懷疑。

我記得面試完寒武紀那個黃昏,我在中關村地鐵的天橋上,哭的昏天黑地。在面試完京東物聯網某部門後在地鐵上哭的泣不成聲以至於有人給把座位讓給我。

我記得那些刷公眾號找內推時,一遍遍複製粘貼自我介紹的日子。

我曾經懷疑過,今年演算法廝殺的紅海里,最後沒有出路要不要轉開發,然後在和一個朋友吃飯聊天中堅定了自己,非演算法不可的想法。

後來我幸運的,拿到了幾個offer.有計算機視覺演算法,有推薦搜索演算法,有深度學習方案支持,有C語言開發。

都不是什麼一線大廠,不過我知道,已經是我的上限。我清楚的認識到,得到的都是幸運,失去的才是人生。面試中的各種幸運,可能是遇到剛看過的題目,可能是剛好會推某個公式,可能是某個觀點剛好打動了面試官,運氣占的成分太大了。而那些你失敗的過程,失敗的題目恰恰是你「憑本事」真心不會的。

我一直想閉關一段時間。梳理知識結構,夯實基礎。但是知難行易,畢業論文等等繁雜瑣事,以及放縱的心態,總是讓閉關修鍊的計劃一拖再拖。

我很佩服那些喜歡寫面經的同學,於己是復盤,於他人是很好的借鑒。而我,向來沒有復盤的勇氣。室友說她經常把面試的電話錄音,然後復聽發現自己的不足並且改進。復盤是個好習慣,願我以後能夠做到。

接下來,我準備把自己準備秋招時印象筆記里的東西貼到這裡,是一次複習的過程,若能幫助到以後找工作的同學,也是好的。

基礎篇:Python 基礎

1. 裝飾器:

  1. 裝飾器本質上是一個Python函數,它可以讓其他函數在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數對象。
  2. 功能:1.引入日誌;2.函數執行時間統計;3.執行函數前預備處理;4.執行函數後清理功能;5.許可權校驗;6.緩存

2. 你對多線程和多進程的理解。

  1. 進程是系統進行資源分配和調度的一個獨立單位,線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源;
  2. 一個程序至少有一個進程,一個進程至少有一個線程;
  3. 線程的劃分尺度小於進程(資源比進程少),使得多線程程序的並發性高;
  4. 進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率 ;
  5. 線線程不能夠獨立執行,必須依存在進程中;
  6. 優缺點:線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源的管理和保護;而進程正相反

3.Linux 批處理命令

grep 命令用來搜索文本,或從給定的文件中搜索行內包含了給定字元串或單詞的文件。通常來說,grep 顯示匹配到的行。使用 grep 來搜索包括一個或多個正則表達式匹配到的文本行,然後只顯示匹配到的行。grep 被視作在 Linux/ Unix 系統中最有用的命令之一。

awk是以文件的一行為處理單位的。awk每接收文件的一行,然後執行相應的命令,來處理文本。

sedsed -e 2d -e 10d myfile.txt > mynewfile.txt

刪除第二第十行,輸出保存在mynewfile.txt

4. Python 內存管理:

1. 引用計數

2.垃圾回收 引用計數為0的變數佔用的內存空間 和 循環垃圾回收 (互相循環音樂)

3. 內存池機制:用於管理對小塊內存的申請和釋放

1. 對內存的垃圾回收機制,將不用的內存放到內存池而不是系統

2.小於256位元組的對象,使用pymalloc實現的分配器,大對象使用系統malloc

5. 什麼是lambda函數?他有什麼好處?

lambda函數是匿名函數;使用lambda函數能夠創建小型匿名函數。這種函數得名於省略了用def聲明函數的標準步驟; 例:f = lambda x,y:x+y # 求兩個函數的和。 x,y是參數,x+y是函數返回值

6.python 賦值 淺拷貝 深拷貝

賦值(=),就是創建了對象的一個新的引用,修改其中任意一個變數都會影響到另一個。淺拷貝:創建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2,工廠函數,如list();3,copy模塊的copy()函數}

深拷貝:創建一個新的對象,並且遞歸的複製它所包含的對象(修改其中一個,另外一個不會改變){copy模塊的deep.deepcopy()函數}

7. 介紹一下except的用法和作用?

  1. try:

    pass

    except Exception as e:print(e)finally:pass捕獲try except中間代碼發生的異常,如果發生異常執行except的代碼,不管是否發生異常都執行finally中的代碼except可以有0個或多個,如果有多個從上到下依次根據異常類型匹配,匹配某個Exception這執行對應的except中代碼

8.分別說說cmp,map,filter的作用?

# cmp:compare比較

cmp(a,b) # a<b 返回-1 a>b 返回1 a=b返回0# map:映射

map(function, iterable) # 將function作用於iterable,每個元素,將對應輸出結果保存為一個list

# 例:def plus_one(x):return x+1map(plus_one,[1,2,3,4]) ===>[2,3,4,5]# filter:過濾器filter(function, iterable) # 將 function依次作用於iterable的每個元素,如果返回值為true, 保留元素,否則從iterable裡面刪除# 例:def bigger_than_three(x):return (x>3)filter(bigger_than_three,[1,2,3,4,5]) ===>[4,5]9.yield 使用:

- 1.保存當前運行狀態(斷點),然後暫停執行,即將函數掛起

- 2.將yeild關鍵字後面表達式的值作為返回值返回,此時可以理解為起到了return的作用,當使用next()、send()函數讓函數從斷點處繼續執行,即喚醒函數。
推薦閱讀:
相关文章