應聘——亂七八糟

[感謝小陶的精心整理](http://note.youdao.com/share/?id=fd1b2bc530b39885177969786a4db08f&type=note#/

經歷2017.3.3第一次阿里內推電面,對自己的無知深感同情。
電面問題
1. spark submit任務提交過程
2. JAVA Hashmap的基本結構
3. JAVA 設計模式: 單件模式需要注意什麼
ps 3.7號查看自己的申請狀態,發現還可以做阿里的編程測試,可能面試官覺得連掛我都浪費時間了吧。做了阿里的編程測試,只能是Java實現(我申請的是JAVA開發工程師),之前做了功課,題沒有變。

2017.3.25 網易筆試 14:00——16:00 職位:大數據開發
- 題庫用的第三方:牛客網
- 一共三個部分:
- 選擇:
1. 數學題:2016!有幾個0,fib(9)
2. Linux基本操作:強制刪除,查詢當前目錄,軟連接與硬連接
3. JAVA類,並行編程,CopyOnWriteArrayList
- 大題:
1. 寫五個JAVA開源庫的功能和應用場景
2. Hbase, Hive, Hadoop, 區別與聯繫
- 編程題:
1. 數組分割:兩個子數組之和相等
2. GGGBGBG,返回調整成GGGGGBB的最少步數
3. 不記得了

小總結:編程第一題比第二題,第三題都難,以後要通讀三道題以後,先挑軟柿子捏

2017.3.27 今日頭條內退面試 gg
1. 項目相關,對項目選定某種策略的理解,如何調高GPU使用率,爲什麼要遷移數據塊而不是把cpu, gpu當成資源調度
2. Hashmap的插入
3. 白紙黑字寫算法: 堆排序/快排
4. 白紙黑字寫算法:求二叉樹的某子節點到另外一個子節點的最長路徑

小總結:面試前準備了很多輔助線的東西,排序算法的實現只准備了歸併排序。基礎!基礎!基礎!重要的事情說三遍。

另外:面試官是北郵學長,人很好,只怪我不努力。今日頭條的辦公環境像是個大大的蜂窩煤。

2017.3.28百度雲計算事業部面試 gg
1. 項目相關:實驗室處理的數據有多大,調度優化,你調度的是什麼?
爲什麼要遷移數據塊(這樣做的效率如何)。數據遷移是如何實現的。有沒有用機架。
2. 基礎:線程和進程的區別。TCP三次握手和四次揮手。爲什麼有第三次握手,前兩次不就夠了?數據庫的ACID,什麼是原子性,什麼是一致性。Hashmap 和 Hashtable的區別,如果單線程的情況,是用哪個。java裏面如何完成多線程同步,防止死鎖。linux操作怎麼統計一個文件裏某一個單詞的個數。spark裏怎麼引入第三方類(如果jar裏有依賴包怎麼引入),spark內存溢出(設置memory)。Mapreduce的過程。shuffle的過程。
3. 算法:鏈表的環,如何確定有沒有環,如何找到環的切口。快排。這次寫完算法以後,就算是快排,面試官也讓你給他講一講,我想主要考察你對快排的理解和你講解算法的能力。

2017.3.29 vmware & 完美世界的筆試
VMware是90分鐘,三道編程題:
1. 數學階乘:5!含有一個0,那麼g(1)=5,g(1)=6,g(1)=7,g(2)=10=5x2,g(3)=15=5x3,以此類推,求min(g(x)).
2. 二分圖最大匹配算法

完美世界:
(單選60分,多選20分,編程20分)
選擇:各種JAVA基礎小題
編程:
1.完全揹包問題

2017.4.6 搜狐媒體產品,內容推薦組面試
這次面的有點尷尬,面試官以爲我是做web後臺。他們不用hadoop和spark.
他們主要想招的是java web和storm的。
有重合部分的僅僅是kafka。
所以面試官關於kafka問了我幾個問題:
1. 對kafka理解,優點缺點。kafka跟其他消息隊列對比,爲什麼要用kafka。
2. kafka裏的partition

2017.4.7 微軟英語線上測試 gg
一共三個部分
第一部分選擇:詞義理解,語法糾錯,閱讀理解
第二部分作文:邏輯清晰,減少語法錯誤
第三部分口語:gg了,還沒開始就已經結束了,因爲寶寶一直next,還沒打電話就next到交卷了。還以爲是網絡撥號呢……..笨死了

2017.4.27 微軟面試 雲計算事業部 Azure PM崗
還以爲線上測試掛掉了,後來還通知我面試,真是感動恩賜。
地點在中關村微軟大廈,1號樓15,16,17層. 環境很喜歡,可以遠眺高山和北京電視塔。
一面,二面:自我介紹。很細很細地問項目裏的各個細節包括:kafka是怎麼流式處理的,你是怎麼理解面向對象編程的,還問到了java的虛函數,你是怎麼理解雲服務的,你是怎麼理解mapreduce的,雲服務paas,saas…爲什麼公司要買雲服務而不是自己搭建一套。
一面面試官人很nice,我說我代碼不太好,他就不問代碼了,問問我pm的問題。比如我已經有人臉識別算法了,怎麼把它和用戶鏈接起來。還有設計模式,你知道哪些設計模式,如何將不同數據庫的邏輯 適應到主數據庫邏輯,我答的用適配器模式(設計模式還沒有複習到咧)還有人際交往方面的。
二面比較嚴肅緊張了,問了一個字符串反轉的問題,把“I love you”改成“you love I”,要求是原地修改,不佔用額外的數據結構,不會gg. 還有一個智力題:54個撲克牌,10個朝上,44個朝下,洗在一起,分成兩堆,怎樣使兩堆正面朝上的牌數相等。

三面:認知服務團隊裏一位香港面試官,這是我第一次面試可以突破重圍,到達最終boss,他的邏輯很好。一開始就介紹接下來的一個小時我們將會
1. 我來介紹自己,自己的職業規劃
2. 他來介紹他們團隊,以及我們background重疊的部分。
3. Q&A.
總之就是閒聊,聊三觀。其中有一個問題自己沒答上來,opencv領域裏,你知道哪個團隊做得最牛。確實,搞技術的應該瞭解自己研究領域的牛團隊纔可以進步呀。

後續補充:6月12日參加了微軟的女生節,和一起參與活動的女生了解了一下,她面試過很多次微軟的PM,每次都覺得自己很有戲,但最後都不了了終(YES,that was exactly what I felt).那是因爲微軟的面試官都接受過培訓,要求鼓勵式的,否則面試者可以投訴面試官。
參加完女生節,瞭解到微軟人性化的環境,堅定自己要去微軟之路,MS鼓勵員工從銷售transfer到研發transfer到PM,transfer到技術支持,我很喜歡這樣,從不同的角度觀察產品,也是從不同的角色尋找自己。

2017.6.14 招商銀行暑期實習 面試
*材料準備
第一次應聘金融行業,準備材料的時候,一些參加過的比賽和一些實習經歷,因爲沒有材料可以證明,因爲有坑(已經忘了比賽的解決思路了),所以沒敢全填,擔心面試的時候問。(主要還是因爲不瞭解面試是技術面還是行爲面試)。其實都應該全寫上,就算是技術面,要是問你機器人某個功能的代碼那完全是故意爲難你了。
*自我介紹
這次面試其實是蒙逼狀態,一是不知道自己應聘的什麼崗位,二是不知道對方到底需要什麼樣的人。流程就是7,8人應聘者和兩名面試官在一個會議室,輪流做自我介紹。當時瞭解到其他人大部分都是學金融的,自己一個工科生無法與面試官產生共鳴,所以拽了拽“互聯網金融” “Fintech”,機器學習(由於緊張自己語速太快了,應該慢一點,解釋清楚)。面試官在自我介紹結束以後只問了一個問題:寫沒寫過區塊鏈?很多人都在列舉自己經歷:學生會經歷(xx會xx職位xx活動)或者參賽、實習經歷。現在回想起來,其實應該根據“學習能力”“適應能力”“行業熱情”等方面,着重用具體的事例來證明自己具備這些能力,而不是一味地枚舉白紙黑字已經有的內容。
*其他
1. 來參解面試的人都是人之龍鳳的感覺,有在加拿大,德國留過學的,還有有父母就是從商的。
2. 男生穿西裝,挺直腰背,給女生扶電梯,so gentle, 金融男好感+1。
3. 跟一個在浦發銀行實習過的金融女生瞭解到,金融行業也加班~
後補:過了招行的面試,但不是技術崗,推掉了。

2017.6.30 hulu電面
流程: 十五分種 自我介紹, 瞭解可以實習的時間 (調整心情,放鬆放鬆),然後發了一個網站,hulu自己的online compiler,網頁上面沒有題目,只是一個編譯環境,與面試官屏幕共享,由面試官說題目。

題目: 一個一維數組: 比如 1 1 0 0 1,1代表路,0代表地雷,要從頭走到尾,每一步的步長要麼等於上一步,要麼爲上一步的步長+1,求是否可以到達結尾。

dp: f[i][j]= (f[i-j][j] || f[i-j][j-1])&&a[i]. i代表loc, j代表已用步長, f[i][j]代表是否可達。 a[i] 爲已知數組。

總結: 一聽一維數組,一開始就想到一維dp,可是步長又是可變的,腦子就變成糨糊了,後來經過面試官提醒,才知道用二維狀態表示。遇到沒有見過的題就不會分析了,看來以後刷題還是要給自己獨立思考冷靜分析5分鐘,再看別人的答案呀。

2017.7.10 百度AR 電話面試PM崗
因爲海投的時候既投了百度的AI,又投了百度的AR,接電話的時候提示對方再說一遍,才確定是AR部門,腦子裏飛速旋轉自己投的什麼崗。面試官問我瞭解什麼有關AR的產品。其實此時自己腦子裏還沒理清AR? AI? PM? DEV?然後就全憑潛意識回答了。完美的錯過了這個機會。其實應該直接向面試官問清的(也沒搞懂來電話的是面試官還是HR)。總之下回再接到電話以後,先問清對方的職位、部門、打電話的意圖,再作答比較好。
另外回答瞭解什麼產品,自己馬後炮地總結了一下,可以根據用戶分(商業型AR:廣告商,娛樂型),也可以根據功能分(移動端AR,設備端AR)。

2017.7.11 滴滴 基礎平臺部門 大數據平臺開發崗 面試
這次感覺被耍了。
招聘要求說是會hadoop啊,spark啊,之類的。但是一面的時候,面試官跟我說他們招實習生是來寫一個新的架構,並且特意問我會不會python.
雖然明面上問題都回答出來了,面試官也比較滿意。但是終歸不是他們要招的人。這個實習的內容也不是我想要的。
招聘貼上應該寫明的,生氣!

2017.7.12 senseTime 分佈式系統實習生
一面就遇到大神地感覺。老白說這家公司很牛,但是硬件設施實在不敢恭維。我說我用opencv處理圖片,大神不屑說opencv精度太差,我司不用。大神還說我在研究生的項目,他們分分鐘鍾就可以完爆。大神就是大神。大神還一眼看出我不是搞技術地料,奉勸我找技術周邊地崗位,比如pm之類。大神的話醍醐灌頂。

2017.7.12 AI 測試崗電話面試
跟測試姐姐聊了一會兒,一番自我介紹以後,測試姐姐建議我不要走這條路,她說模型都是加了密給她們測試的,婉拒。

2017.7.14 worldquant量化實習生
不知道爲什麼,反倒是每次覺得高不可攀地外企可以順利到三面,其他總是一面就掛。思量之後,發覺一面到三面不是闖關模式,而是平行的關係。最終的結果由三個面試官加權而得,說明多一次面試,多一次爭取的機會,而不是絕對地闖關成功。
筆試1小時: python字符串處理基礎題(replace, reg, difference)
一面: 簡歷上的項目,一道dp題
二面: 二面面試官誠實地坦白了實習生工作內容只是預處理數據,不是我想像地寫訓練模型,很感激他的坦白。然後是一道分割字符串的題
三面:對自己的swot分析,並且坦言說我寫代碼的功力不夠。估計要掛,畢竟有硬傷。

基礎篇

IO

Tables 處理單位 應用
字節流 InputStream/OutputStream 1 byte Anything
字符流 Reader/Writer 2 bytes 多國語言

操作流程

在Java中IO操作也是有相應步驟的,以文件操作爲例,主要的操作流程如下:

1 使用File類打開一個文件

2 通過字節流或字符流的子類,指定輸出的位置

3 進行讀/寫操作

4 關閉輸入/輸出

IO操作屬於資源操作,一定要記得關閉

三大特性

面向對象編程有三大特性:封裝、繼承、多態。

   封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了數據。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。

   繼承是爲了重用父類代碼。兩個類若存在IS-A的關係就可以使用繼承。,同時繼承也爲實現多態做了鋪墊。那麼什麼是多態呢?多態的實現機制又是什麼?請看我一一爲你揭開:

   所謂多態就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因爲在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。

繼承與引用

  • String是final類型的,因此你不可以繼承和修改這個類
  • 對於基本類型變量,Java是傳值的副本,對於一切對象型變量,Java都是傳引用的副本
  • 靜態的main方法不能訪問一個方法外的 非靜態變量
  • 重載(overload):對於類的方法(包括從父類中繼承的方法),方法名相同,參數列表不同的方法之間就構成了重載關係。
  • 覆蓋 (override):也叫重寫,就是在當父類中的某些方法不能滿足要求時,子類中改寫父類的方法。當父類中的方法被覆蓋了後,除非用super關鍵字,否則就無法再調用父類中的方法了。

棧內存和堆內存

棧內存: 當在一段代碼塊定義一些基本類型的變量和對象的引用變量時,Java就在棧中爲這個變量分配內存空間,當超過變量的作用域後,Java會自動釋放掉爲該變量所分配的內存空間,該內存空間可以立即被另作他用。

堆內存用來存放由new創建的對象和數組。 在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。

Vehicle veh1;
veh1 = new Vehicle();

veh1爲對象的引用變量。第二行代碼,這個引用變量指向一個對象。

其他

成員變量,局部變量,靜態變量(http://blog.csdn.net/s1amduncan/article/details/52089944

位操作

http://blog.csdn.net/morewindows/article/details/7354571
位運算其實就是直接對在內存中的二進制數據進行操作,因此處理數據的速度非常快。
前提:位運算指針對整數 Int
已知int 15的二進制是0000 1111. -15的二進制是它的取反,再補一位,就是1111 0001. 最左邊第一位是符號位。int 是8bit

數據結構

鏈表

http://blog.csdn.net/fightforyourdream/article/details/16353519

散列表

也叫哈希表,通過散列函數或者哈希函數,完成多對一的映射,到散列表或者哈希表。

Hashmap vs Hashtable

Name Father synchronized k,v==null
Hashtable Dictionary yes 不可以
Hashmap AbstractMap no 可以

[感謝老紫竹和shohokuf]

[膜拜大神]
BLOOM FILTER

http://blog.csdn.net/yang_yulei/article/details/26066409
三種遍歷

算法與算法分析

算法時間複雜度

當不用限定詞時,一般“複雜度”是指時間複雜度。
DEF:在進行算法分析時,語句總的執行次數 Tn 是關於問題規模n 的函數,進而分析T(n) 隨n的變化情況並確定T(n) 的數量級。記作T(n)=O(f(n)) . 表示隨問題規模增大,算法執行時間的增長率和f(n) 的增長率相同。f(n) 是問題規模n 的某個函數。

算法空間複雜度

DEF:T(n)=O(f(n))f(n) 爲語句關於n 所佔存儲空間的函數。

kmp算法

kmp算法完成的任務是:給定兩個字符串O和f,長度分別爲n和m,判斷f是否在O中出現,如果出現則返回出現的位置。常規方法是遍歷a的每一個位置,然後從該位置開始和b進行匹配,但是這種方法的複雜度是O(nm)。kmp算法通過一個O(m)的預處理,使匹配的複雜度降爲O(n+m)。
前提:可以繼續比較位置i的前提是f的前i-1個位置滿足:長度爲i-k-1的前綴A和後綴B相同
kmp算法的核心即是計算字符串f每一個位置之前的字符串的前綴和後綴公共部分的最大長度:
例:

c a b c a b
0 0 0 1 2 3

![詳見](http://blog.csdn.net/yutianzuijin/article/details/11954939/

發佈了18 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章