謹以此文紀念2019年春招
前言
整個三四月,一直在背知識點,感覺好多內容沒有複習到位。
每天刷着leetcode和ZOJ,逛着牛客網看又有哪家開始面試,每天的心情就像一個“W”。
看過別人發的騰訊大廈,幻想過騰訊大廈向外看的感覺。
大一暑假去過阿里杭州園區,擔憂自己有沒有機會再去。
真的沒想到迷茫中的自己等來了騰訊,又迎來了阿里。
開發新產品的意義就在於能夠讓人們更好的科技的時代中生活,我依然有無數的知識需要學習,希望此文能夠給困惑中的同學們一點點幫助,擺脫焦慮。
終有一天,夢想實現,想起阿里園區中的一句話,“謝謝那個曾經努力的自己”。
也希望未來的自己也能夠和優秀的同學一起成長。
簡歷情況
- 本科大三,5%。
- 計算機視覺深度學習項目2個(一大一小),大項目論文投了《計算機應用》(已錄用)。
- 浙江省“新苗”科技創新項目立項。
- ACMer,看過STL和JVM,熟悉數據結構,實現能力中上。
- 技術棧:C++/Java/Python比較均衡,瞭解Linux和docker,設計模式。
- 生活中:計算機社團社長,大學生暑期社會實踐團隊負責人。
- 看的書:機器學習基礎+花書+西瓜書,leetcode,JVM虛擬機,effective C++
- 貢獻量:Github: https://github.com/lizhimins CSDN: https://blog.csdn.net/Terrances
offer情況
- 已獲:美團(4面),默安(3面),塗鴉(3面),騰訊(5面),阿里(5面)
- 希望:華爲(簡歷池),微軟(1面)
- 放棄:京東(筆試時間不合適),有贊(主要是有offer了…)
- 已掛:字節跳動(1面)
投遞情況
已投遞
- 小米,3月13日投遞,上海,軟件開發工程師-Java方向,還在簡歷池裏面,估計校招時間沒到。
- 美團,3月2日投遞,北京,後端開發,3月13日技術一面,3月16日技術二面,3月18日offer。
- 阿里巴巴,3月13日投遞,杭州總部,Java後端開發,3月15日內推到新零售事業部,Java研發。3月28日晚5點準備去吃飯,收到面試邀約,天氣暴雨,隨便找了個教室面試,然後過了一面等二面中…
- 字節跳動,3月13日投遞,上海,後端開發,3月16日春招在線編程4題全對。3月23日技術一面,技術方向和面試官不符合,這是我最生氣的一次面試,莫名其妙被對面掛了,也是暫時唯一面試掛的。
- 默安科技,3月14日投遞,杭州,C++開發,3月15日晚連續一面,二面技術面,秒殺了幾個算法題後技術面過,3月16日HR中午面試給了offer call,這也是我收到的第一個offer,非常感謝默安,蹭一下雲舒大大的歐氣,說五月給正式offer並且加了微信好友。
- 騰訊,3月15日投遞,深圳總部,後端開發,找了工程師內推到CSIG雲與事業產業羣,然後被微信撈起,簡歷面+三次面試,3月30日HR面,已offer call。
- 京東,3月16日投遞,北京,未收到第一批未筆試,Java開發崗。4月筆試時間不合適放棄了。
- 拼多多,3月17日投遞,上海,基礎平臺研發工程師。QQ登錄的,簡歷填寫較爲簡單。
- 塗鴉智能,3月17日投遞,杭州,後端開發工程師。主要做5G+物聯網+機器學習的。一面算法秒殺,二面問了多線程,二面是leader級別的,答的還可以,說給offer是C++音視頻方向,主要做視頻會議這類的,還沒有HR給正式offer call,但是留了聯繫方式和微信。
- 華爲雲計算,3月17日投遞,北京,雲計算產品工程師-IT產品線。估計是我渣渣本科不能過關,簡歷池了,筆試機會都木給我,果然菜是原罪。
投遞失敗或未投
- 深信服,3月17日投遞,廣州,說暫拒2020實習生,讓我四月再投。
- 網易,杭州總部,後端開發,未投簡歷。準備找人內推。
- 搜狗,3月21日開始投遞,崗位只有北京。未投簡歷。
- 滴滴新銳。3月22日感覺有點困難,未投簡歷。這個沒找到鏈接。
- 攜程。3月23日看了下只有廣州的,暫時沒有投遞。
- **百度和度小滿(百度金融)**3月25日投遞,郵件內推,暫時沒有收到面試。
- 有贊,3月27日,杭州,後端開發,電商。因爲已經投了塗鴉和阿里,就拒了。
- 中國移動。覺得沒有杭州的崗位就沒有投遞。
- IBM,投遞鏈接
面試情況
美團
美團一面 (43分鐘)
第一次面試很緊張,沒有錄音
- 自我介紹+項目。
- 線程的實現,同步,優化
- 線程同步,線程私有變量。
- 自旋鎖,鎖膨脹。
- mysql索引怎麼實現。最左前綴。成爲PK的條件
- Time-wait和Close-wait出現在什麼時候?
- 怎麼實現反射。
- java序列化,netty
美團二面 (21分鐘)
- Spring Dao用哪種設計模式用得最多?
- hibernate註解和XML。
- 裝飾器模式。抽象工廠模式。
- AQS的源碼和ReentrantLock的源碼
- Spring AOP瞭解過嗎。
- Spring管理的bean的對象存儲在哪裏。類的元信息比如常量表,字面量,靜態字段在方法區(Method Area裏),關於對象的數據在jvm堆裏。
- HashMap原理,hash衝突解決,然後又扯到紅黑樹。
美團三面 (45分鐘)
- 沒有自我介紹,強懟項目。
- 線程池,線程池裏面的線程的狀態有哪些。
- 給鏈接手擼hash拉鍊。這個花了25分鐘左右調到沒BUG了。
- 發展規劃。
- 想問的。
分佈式鎖:多臺機器部署的應用對一個共享數據做同步,問如何解決。
美團HR面
- 忘記錄音。
默安科技
默安科技一面
- 自我介紹+項目。
- 二叉樹前序遍歷。
- 深入瞭解項目。
- 線程進程區別,線程狀態。
- 做了幾個題,具體有些忘記了。
- 怎麼看端口占用狀態。答lsof -i, netstat。
- Linux常見命令。ls,mv,cp,source,cron等等。
默安科技二面
- 鏈表找中間節點。快慢指針
- 講講快排。口述僞代碼。
- TCP/UDP區別,用途,優勢。
- socket編程一般順序。
- 二叉樹層次遍歷,口述僞代碼。
- Java基礎,封裝,多態。
- 默安科技主要還是C++主導,Java崗位也有。
默安科技HR
- 問了下基本情況就給了offer,五月正式offer
- 默安在我比較絕望的時候給了我很大的信心,謝謝默安科技。
騰訊(WXG微信支付)
投的是CSIG雲產業羣,意外的被WXG微信組撈起,感謝機緣巧合吧。
騰訊簡歷面(編程 + 33分35秒)
- 記事本里手寫OOP實現一個簽到的程序。
- 從一堆數字中O(n)找不重複的數字。
- 字符串處理,魔改KMP。
- 數學智力題,64匹馬取前8,問最快要幾次。11次。
- 簡歷面,問項目做了什麼,主要的技術棧。
騰訊一面(41分38秒)
- 深入問了我項目。
- 線程池,連接池,各自優點。
- Java常見設計模式。
- 講講builder建造者模式。這個答的不太好。
- TCP/UDP區別,什麼時候該用什麼。
- UDP實現TCP。
- 設計一個APP,TCP/UDP具體運用。
- 數據庫索引,數據庫引擎。
- 學習方向,我說C++/Java/Python比較均衡。
- 監督學習,無監督學習。
- 科技創新立項都做了什麼。
- 沒給我機會問問題,大概還是我太菜了。
騰訊二面(視頻面試,75分鐘,主要是寫代碼)
- ACM複雜規則模擬。這裏可以用Java責任鏈模式,但當時問的時候我沒有答出來,看過忘記了。
- Java GC。開始背誦balabala。
- 雙親委派機制。
- 產生死鎖的四個必要條件:
互斥條件:一個資源每次只能被一個進程使用。
請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係。 - 獨佔鎖,共享鎖和更新鎖。
- 還有什麼想問的。問了下技術氛圍和學習情況。
- XSS注入攻擊瞭解不。答不會。
- SSH登錄,我說了半天,對面說這個方法叫什麼。想了一下,非對稱加密。
- 實現一個人臉識別軟件要多少工時?
- 說實話,這一面面的我快自閉了,有些看過就忘了。
騰訊三面(微信語音的)
- 進程調度,進程狀態切換。
- 怎麼用Java/C++實現線程池,具體的做法。
- Spring框架,ORM框架Hibernate講講。
- IOC, AOP,IOC(控制反轉)和DI(依賴注入)有什麼不同,Java反射機制。
- 適配器模式(Adapter pattern),橋接模式(Bridge pattern),組合模式(composite pattern)
- 主要問我想做的技術方向。
- 介紹騰訊的部門和人員劃分等。
- HDFS, Paxos選舉協議,zookeeper和redis一點點。
- 口頭offer
騰訊HR面(小哥哥)
- 自我介紹,社會活動介紹。答了計算機社團,暑期社會實踐。
- 選了簡歷上一個項目,項目中你的貢獻。
- 你對騰訊的認識。
- 你爲什麼要投這個崗位,還投了其他公司嗎?提了阿里,塗鴉,美團。
- 那ali和tx你選那個。騰訊呀,機會更多balabala。。。
- 父母親人有從事相關計算機崗位嗎。
- 父母對你成長的影響,對你崗位的選擇怎麼看。
- 平時都學什麼東西,沒課的時候幹啥。
- 你覺得你有什麼優點,缺點。
- 你提到了老師,請問你覺得老師最好的品質是什麼?示以美好,授以希望。
- 還有什麼想問的。問了下部門人員結構和轉正率。
彩蛋
- 小夥伴A,HR面,我覺得WX是最好的產品。對面:我不是WX的。舔錯了(?)
- 小夥伴B,一面說,我不會C++。面試官:曉得了,一面過了。
二面,面試官:聽一面說你的C++特別好。然後。。。
字節跳動(今日頭條)
- 手寫歸併排序。
- Git版本控制。按項目怎麼用答了一下,分支衝突解決。
- Python裝飾器。答當時我用來寫單元測試的,久遠,忘記了
- 講講docker。答隔離機制,掛載點,線程,還扯了內核調度,估計不是想要的答案。
- docker內網IP段是什麼。
- 數據庫索引機制。
答B+樹,hash,各個優勢balabala,然後說不太對?
答聚簇索引,非聚簇索引balabala,還不太對?沒懂這個題問什麼。 - 數據庫B+樹。能答的都答的差不多了。
- 樂觀鎖悲觀鎖,CAS, ABA問題。
- 還想問的?您是做什麼的,GoLang開發。
總結一下問題:Git,docker,Python,Golang。
沒問任何C++/Java。也沒有問數據結構,計算機網絡。
今日頭條後端開發一面涼,心態爆炸。
塗鴉智能
塗鴉一面
- 自我介紹。
- 主要問了下項目。
塗鴉二面
- 線程進程區別,線程狀態。
- Linux權限755是什麼。
- select pool epoll,文件描述符FD。
- 設計一個多用戶APP,你會怎麼分配,安排,和騰訊的問題比較類似。
- 還有一些碎的問題。
- 這一面和負責人聊得非常開心。如果沒有AT,我估計會選擇塗鴉。
塗鴉HR面
- 實習生打的電話,告知收到騰訊offer,不互相浪費時間。
微軟
- 待補充
阿里巴巴(新零售)
阿里一面(38分50秒)
- 自我介紹+項目介紹。深度學習,SSH框架,C#,Java
- 看你提到了連接池,druid連接池。
- 常見排序算法。快排,二路歸併,冒泡,插入,錦標賽排序。topK問題。
- TCP三次握手,四次揮手。
- 數據庫引擎對比,索引。Innodb,Myisam和Memory對比了下,B+樹,hash,between操作,left join操作。
- 看你搞ACM,你給我講個簡單的數據結構,答了並查集和線段樹。
- 怎麼保證多線程操作的原子性。原子類,鎖,volitile部分操作。
- 深入問了樂觀鎖,悲觀鎖及其實現。我提了CAS, ABA但是不問我hhh。
- Python機器學習基礎。
- 怎麼解決依賴問題。
- zookeeper鎖,數據庫隔離級別。
- docker隔離部署問題。
- taobao查詢排序要考慮那些因素?這個問題賊困難了,能說的東西很多,估計是看了我簡歷上機器學習,答了過往消費記錄,搜索記錄,協同過濾,聚類。
- 有什麼要補充的呢,要考慮商家那邊的情況,balabala。
- 還有什麼想問的。
總結:問的問題很碎但是很全面,很容易看出一個人的基礎掌握程度。
阿里二面(45分39秒)
- 自我介紹+項目介紹。深度學習,SSH框架,C#,Java
- 項目中你相比於別人的優勢在哪裏,就是你用了別人沒有的東西。
- 你覺得你的能力大概在什麼方面。ACM能力。當時以爲要我敲代碼了。一邊說話一邊開機。
- 你是如何進行學習的?
- 畫一個軟件的執行流程,UML, ER。
- 有沒有寫過開發文檔。
- Java怎麼加載類,加載驗證準備解析初始化使用卸載,雙親委派機制。bootstrap class loader,extend class loader具體。
- linux常用命令。iftop,netstat,htop,apt,yum,source,corn,docker等等。
- 講講docker。
- MVC,MVVM對比。
- Spring的IOC, AOP。
- ORM框架Hibernate講講。
- 設計模式瞭解嗎?
- 還有什麼想問的。
總結:這一面中規中矩,沒有問很難的問題,只要確實嘗試過簡歷上所說的內容,應該都可以答出來。
阿里三面(leader面 18分59秒 + 24分53秒)
- 提前一天預約
- 告訴我今天面試40分鐘左右,包括自我介紹,技術知識,項目經驗。
- 自我介紹。獎學金,ACM,深度學習,傳統項目開發,負載均衡優化等。
- 你維護的CSDN和Github主要內容,刷ACM題情況。
- 你的哪塊基礎知識比較好一點?每塊都很平均吧。。。
- TCP如何在不可靠網絡傳輸上實現可靠傳輸?超時重傳,滑動窗口。TCP狀態。
- TCP超時時間,RTT怎麼計算。
- 4G切換Wifi時候TCP怎麼實現流量變化?分組丟失,快重傳,快恢復等。路由器交換機排隊。
- 常見的TCP優化算法。TCP擁塞算法,答了谷歌BBR和銳速的原理以及簡單實現。
- 操作系統linux內核對TCP優化的辦法,HTTP1.0,1.1,2.0每個版本做的更新。狀態100,host字段,谷歌瀏覽器6個TCP連接等,支持長連接。
- HTTP中cookie和session的區別。客戶端服務端,表示用戶的方法,禁用cookie時候怎麼辦。
- 在上一條的基礎上拓展答了Redis.
- session存的數據結構,對於單個用戶set,多個用戶hashmap。
- hashmap的原理,key-value計算,衝突解決的三個方式。和二分時間複雜度對比。rehash造成環。
- hashtable線程安全嘛,講講線程安全具體實現。
- conCurrentHashmap和Hashmap性能上除了分段鎖還有什麼別的優化。我只回答了段內擴容。
- 高併發場景下hashmap使用,CAS,ABA問題。
- 並行和併發的概念和區別。時間片,上下文切換。
- 數據庫範式,NoSQL瞭解過嗎?
- UML圖,ER圖,流程圖。
- 數據庫的索引,最左前綴,abc三個主鍵。
- 跨表查詢常見優化思路。
- 電話中斷…吐槽阿里園區的電話質量,每一面都有問題。
- 打通之後簡單聊了一下,有沒有別的公司offer,說有美團,騰訊offer,挑戰微軟。
總結:此人說話很有條理性,一聽就是大佬,全程在敲面試記錄,綜合體驗還是很不錯的。
阿里四面(交叉面 天貓超市)
- 自我介紹,介紹完了又讓我確認了一遍 專業,學歷,電話確認。(?)
- 講講你的ACM經歷。
- 你有考慮過考研嘛?可以在企業中學到更多吧。開始迷了一會兒,聽不清對面說什麼。
- 對比一下考研和工作。
- 怎麼平衡工作和休閒的時間。
- 你在深度學習項目裏面做了什麼。看過花書,西瓜書,機器學習導論。
- 這個項目可以用到哪些方面,夜間攝像頭,老照片修復等等。
- 你瞭解Java開發框架嘛?SSH,SSM。擴展了dubbo,durid,rocketMQ,Netty。這個問題我答的太多了,磨蹭了蠻久。
- 講講rocketMQ,優先級隊列,Filter,Persistence,Reliablity。
- 消息的一致性怎麼做。保證冪等性。
- 回溯消費。回溯消費是指Consumer已經消費成功的消息,由於業務上需求需要重新消費。
- wait(), sleep()區別。yield方法。
- lock和synchronized對比。
- 可重入鎖,偏向鎖,鎖粗化。
- volitile保證內存的可見性,禁止指令重排,cache。
- volitile保證原子性?我說可以,後來我查了下是部分可以。。。完全答錯。
由於volatile保證了可見性,那麼在每個線程中對inc自增完之後,在其他線程中都能看到修改後的值,所以有10個線程分別進行了1000次操作,那麼最終inc的值應該是1000*10=10000。這裏面就有一個誤區了,volatile關鍵字能保證可見性沒有錯,但是上面的程序錯在沒能保證原子性。可見性只能保證每次讀取的是最新的值,但是volatile沒辦法保證對變量的操作的原子性。 - 內存屏障。直接說不知道,大神我真的不懂啊。。。
內存屏障(Memory Barrier,或有時叫做內存柵欄,Memory Fence)是一種CPU指令,用於控制特定條件下的重排序和內存可見性問題。Java編譯器也會根據內存屏障的規則禁止重排序。
內存屏障可以被分爲以下幾種類型
-
LoadLoad屏障:對於這樣的語句Load1; LoadLoad; Load2,在Load2及後續讀取操作要讀取的數據被訪問前,保證Load1要讀取的數據被讀取完畢。
-
StoreStore屏障:對於這樣的語句Store1; StoreStore; Store2,在Store2及後續寫入操作執行前,保證Store1的寫入操作對其它處理器可見。
-
LoadStore屏障:對於這樣的語句Load1; LoadStore; Store2,在Store2及後續寫入操作被刷出前,保證Load1要讀取的數據被讀取完畢。
-
StoreLoad屏障:對於這樣的語句Store1; StoreLoad; Load2,在Load2及後續所有讀取操作執行前,保證Store1的寫入對所有處理器可見。它的開銷是四種屏障中最大的。
-
在大多數處理器的實現中,這個屏障是個萬能屏障,兼具其它三種內存屏障的功能。有的處理器的重排序規則較嚴,無需內存屏障也能很好的工作,Java編譯器會在這種情況下不放置內存屏障。
-
解釋一下copyOnWrite,講了一下Mac OS裏面對文件寫時複製技術。
-
叫車時候,怎麼給周圍車輛排序?你能拿到哪些數據,常見路線,加權堆排序或者其他機器學習方法。懷疑是滴滴的大佬?
-
堆排序比其他排序好在那裏?(時間)穩定性?快排什麼時候O(nlgn)退化O(n^2),堆一直O(nlgn)。後來大佬說他沒有說時間,說的是排序穩定性。那麼堆不是穩定的,都怪電話聽不清,這鍋我不背啊。
-
海量數據找TopN。錦標賽排序,敗者樹。大根堆,小根堆。
-
完全二叉樹,滿二叉樹。紅黑樹的幾個性質。
-
紅黑樹旋轉次數。我拓展了伸展樹,二三四樹,B+樹的具體實現相同不同點。
-
hashmap什麼時候用紅黑樹。衝突量>8, <6的時候退化爲鏈表。爲什麼要這麼做。性能比較。
-
覺得前面16-18答的不好,我說我的代碼實現能力還可以(瘋狂暗示coding手速能不能加點分)。
-
你還有什麼想問的。不同部門情況。
-
offer情況,所以你會去騰訊?考慮地域問題,家人問題也可能選阿里。
-
您是哪個部門的?天貓超市。其他問題。
總結:問題都很不錯,很全面也很深入。奈何本人太菜,答錯了幾個點。
阿里HR面
- 自我介紹開局緩解尷尬。
- ACM,學習的內容,論文情況。
- 學習方法,實踐方法。
- 初高中算法競賽和大學競賽有什麼不同。
- 你怎麼自學法。
- 怎麼平衡工作和學習。
- 花書,機器學習導論主要講了哪些內容?講的比較淺層,但是HR反問了一個點。(HR也懂技術,大霧)
- 你帶領的計算機社團在大學期間的貢獻。
- 社會實踐方面“十佳團隊”,整個活動內容,流程講講。
- 其他常規問題。
- 想問的,部門人員情況。
小吐槽
面試官都很友好,但是後面幾面電話通話質量太差了,每一面都有聽不清的情況,面其他公司沒有這個問題。
筆試情況
字節跳動(開發崗筆試,3月16日,C++,4AC)
- 貪心 沒什麼好說的,200->17,這裏要1024減一下
- 掃描,從前向後不斷更新,匹配規則以後去掉字母就可以,中間有點寫醜了,15-20分鐘
- 模擬+貪心,首先把1號複製一下做一個開環,然後從左到右從右到左貪心最小更新即可,不讀錯題應該10分鐘內
- 典型的二分答案,讀完題應該就知道了,項目做多了二分都寫炸了。。。eps精度不夠會導致只能90%
京東(開發崗,4月13日,沒參加但是後來看了題)
- DFS或者並查集
- 先觀察到m很小(10),然後直接想KMP,找一波把符合條件的區間用struct記錄下來,然後區間貪心,參考借教室問題。想法肯定對了,實現上受時間限制可能碼不完。
致謝
在3月中的幾天,每天都擔心被撈起,接不到面試電話怎麼辦?沒談好掛了怎麼辦?爲什麼自己還在簡歷池?
爲什麼別人不如我都能上岸。其實還是因爲自己不夠強,想明白了又滾去學習了。
加入了誇誇羣,相互鼓勵,讓我有信心繼續等下去,也沒荒廢手上的閱讀。
致謝:(排名不分先後hhh…)
- 樣樣,在牛客有ID(今天yy收到offer了),騰訊offer。
- 沙沙,研究生,愛奇藝大佬。
- 嘻,海外研究生,誇誇羣羣主。
- Roni,某省ACM大佬,最佳女隊,ACM獎無數。
- Draymonder,礦大本科生,刷題經歷豐富,善於總結。
- David,小項,Py和Go大神。
- 人類的文明,羣裏學歷最高的,南大博士高材生
- adsb,面阿里專有云的大佬。
- 劉TN,阿里雲OSS在崗工程師。
- ",騰訊CSIG在崗工程師,騰訊內推人。
- 努力和大佬做同事,北京研究生。
- 以南,和我同齡,海外研究生,可我本科她卻研一?
- 儒雅隨和臭弟弟,種靈芝的大佬。
- Psyduck,地理跨考計算機,數據崗。
- 卑微的自走棋騎士dota中軍0offer,數學系,研一,好像華爲offer。
- 曉航,一起面ali的朋友。
- Mosquito,四川ACM大佬,對算法和數據結構非常熟,面Java研發。
- Zero,上海交大研究生。
- 凌雲。博士大佬+1。
- 摸魚小新。研究生。
- 卑微小李,浙江大學大佬。
- 娜娜,初中認識的外校同學。
- 小吳**,學長,期間和他交流比較多。
- 陸YH,同學,一起做項目,一起打ACM。
- 蔡CH,學弟,比較正能量。
尾語
做一個善良的人,爲羣衆謀幸福——高爾基
本文同步地址:
https://github.com/lizhimins/dailylife/blob/master/job.md