A. 大廠面試都是機考最難嗎
不一定,只是相對於別的來說,機考稍微難度大點。
面試考察的范圍都很廣,包括基礎知識、項目和演算法。
基礎知識這塊,需要花大量時間准備每一個細節,知其所以然,這樣才能面試的時候問起來,都能頭頭是道。
演算法,這點就是要多刷題。面試之前要對各種常見演算法瞭然於心,比如DFS、BFS、樹、貪心演算法、常見DP等等,有時間的話多去刷刷題找感覺。
B. 都快2021年了,演算法崗位應該怎樣准備面試
說到演算法崗位,現在網上的第一反應可能就是內卷,演算法崗位也號稱是內卷最嚴重的崗位。針對這個問題,其實之前我也有寫過相關的文章。這個崗位競爭激烈不假,但我個人覺得稱作內卷有些過了。就我個人的感覺,這幾年的一個大趨勢是從迷茫走向清晰。
早在2015年我在阿里媽媽實習的時候,那個時候我覺得其實對於演算法工程師這個崗位的招聘要求甚至包括工作內容其實業內是沒有一個統一的標準的。可以認為包括各大公司其實對這個崗位具體的工作內容以及需要的候選人的能力要求都不太一致,不同的面試官有不同的風格,也有不同的標准。
我舉幾個例子,第一個例子是我當初實習面試的時候,因為是本科生,的確對機器學習這個領域了解非常非常少,可以說是幾乎沒有。但是我依然通過了,通過的原因也很簡單,因為有acm的獲獎背景,面試的過程當中主要也都是一些演算法題,都還算是答得不錯。但是在交叉面試的時候,一位另一個部門的總監就問我有沒有這塊的經驗?我很明確地說了,沒有,但是我願意學。
接著他告訴我,演算法工程師的工作內容主要和機器學習相關,因此機器學習是基本的。當時我就覺得我涼了,然而很意外地是還是通過了面試。
核心能力
由於我已經很久沒有接觸校招了,所以也很難說校招面試應該怎麼樣准備,只能說說如果是我來招聘,我會喜歡什麼樣的學生。也可以理解成我理解的一個合格優秀的演算法工程師應該有的能力。
模型理解
演算法工程師和模型打交道,那麼理解模型是必須的。其實不用說每一個模型都精通,這沒有必要,面試的時候問的模型也不一定用得到。但更多地是看重這個人在學習的時候的習慣,他是淺嘗輒止呢,還是會刨根究底,究竟能夠學到怎樣的地步。
在實際的工作當中我們可能會面臨各種各樣的情況,比如說新加了特徵但是沒有效果,比如升級了模型效果反而變差了等等,這些情況都是有可能發生的。當我們遇到這些情況之後,需要我們根據已知的信息來推理和猜測導致的原因從而針對性的採取相應的手段。因此這就需要我們對當前的模型有比較深入地了解,否則推導原因做出改進也就無從談起。
所以面試的時候問起哪個模型都不重要,重要的是你能不能體現出你有過深入的研究和理解。
數據分析
演算法工程師一直和數據打交道,那麼分析數據、清洗數據、做數據的能力也必不可少。說起來簡單的數據分析,這當中其實牽扯很多,簡單來說至少有兩個關鍵點。
第一個關鍵點是處理數據的能力,比如SQL、hive、spark、MapRece這些常用的數據處理的工具會不會,會多少?是一個都不會呢,還是至少會一點。由於各個公司的技術棧不同,一般不會抱著候選人必須剛好會和我們一樣的期待去招人,但是候選人如果一無所知肯定也是不行的。由於學生時代其實很少接觸這種實踐的內容,很多人對這些都一無所知,如果你會一兩個,其實就是加分項。
第二個關鍵點是對數據的理解力,舉個簡單的例子,比如說現在的樣本訓練了模型之後效果不好,我們要分析它的原因,你該怎麼下手?這個問題日常當中經常遇到,也非常考驗演算法工程師對數據的分析能力以及他的經驗。數據是水,模型是船,我們要把船駛向遠方,只懂船隻構造是不行的,還需要對水文、天象也有了解。這樣才能從數據當中捕捉到trick,對一些現象有更深入的看法和理解。
工程能力
雖然是演算法工程師,但是並不代表工程能力不重要,相反工程能力也很重要。當然這往往不會成為招聘的硬性指標, 比如考察你之前做過什麼工程項目之類的。但是會在你的代碼測試環節有所體現,你的代碼風格,你的編碼能力都是你面試的考察點之一。
並不只是在面試當中如此,在實際工作當中,工程能力也很關鍵。往小了說可以開發一些工具、腳本方便自己或者是團隊當中其他人的日常工作,往大了說,你也可以成為團隊當中的開發擔當,負責其團隊當中最工程的工作。比如說復現一篇paper,或者是從頭擼一個模型。這其實也是一種差異化競爭的手段,你合理地負擔起別人負擔不了的工作,那麼自然就會成為你的業績。
時代在變化,行業在發展,如今的校招會問些什麼早已經和當年不同了。但不管怎麼說,這個崗位以及面試官對於人才的核心訴求幾乎是沒有變過的,我們從核心出發去構建簡歷、准備面試,相信一定可以有所收獲。
C. 刷LeetCode對於國內IT企業面試幫助大嗎
就目前的情況來看,國內公司社招面試中,對於對於演算法的考驗越來越多,很多公司會拿leet code的原題用於面試。
根據我的了解,目前國內的中型廠記下的基本上不會考驗演算法題不會哪一道編程題,讓你手寫指示會咨詢你一些項目經驗,包括一些基礎的資料庫類的知識,或者是編程基礎類知識,比如說你用java開發怎麼會問你spring cloud的spring boot相關知識,還有一些可能會問你高並發,生產問題處理,linux伺服器命令等等,手撕紅黑樹的情況不多。
對於國內的這些外資企業微軟、蝦皮等等,可能會問一些演算法題,但一般都不會特別難。數據結構問鏈表二叉樹,演算法問動態規劃之類的吧,也是min和easy難度。
對於頭部的大廠可能會出一些hard級別的演算法題,或者是改編過的編程題。目前程序員的人數越來越多,所以未來可能會有更多的公司會通過手撕編程題的方式進行面試。
對於校招來說說來的時候呢,是非常有幫助的,聽不起。各大公司的面試題中都會有演算法題,所以必須要通過刷leetcode來提升自己的。有可能你會遇到一些原題。
不管怎麼樣說演算法題都是很有幫助的,有助於提升編碼能力和邏輯能力,可以讓你的編碼能力一直保持一個不錯的水平,因為很多人平時都是curd小子,很多基礎知識都忘記了包括演算法能力。
leetcode上題很多,逐漸你會發現刷題太耗時間,所以建議採用哈夫曼樹規則。高頻題優先,各個tag刷10題以上掌握典型題總結演算法套路,先把觸手放在能掌握的地方。然後再去重點刷貪心和dp,分類好思路和模板。再去牛客搜公司名刷一些該公司面試題,有個底不至於面試沒見過。建議medium為主,easy和hard為輔。
一零言,聊聊IT,談談技術
D. 面試遇到演算法題怎麼辦,都不會
科班出身還是半路出家?半路出家就選別這類崗位。
計算機科學專業的基礎,外加演算法競賽相關的培訓和實戰,不算基礎,培訓過程也至少要耗去一兩年,所以要算能不能和值不值。真正需要演算法能力高超的崗位薪水好,但是,少之又少,競爭慘烈,985本專業畢業生能搶上的都屬於鳳毛麟角。
E. 本人目前在找java開發工作,每次收到面試邀請,去面試都要做筆試題,筆試是我的通病,演算法不會。
買數據結構、演算法(Algorithm)、演算法導論一類的書看,仔細做書上的題
重點復習鏈表、隊列、堆棧的操作、二叉樹的各種常見演算法、主要排序演算法、圖論最短距離問題、字元串的各種操作、時間復雜度的計算等
F. 程序員不會演算法題怎麼面試
你好,很高興回答你的問題。
我覺得有兩個辦法吧。
一,找不面試演算法的公司。
二,在面試前多准備准備,刷一刷演算法題。
如果有幫助到你,請點擊採納。
G. 演算法不扎實的程序員,每一個都很慌
初學者經常問這樣的問題,然而這些其實是錯誤的問題。
對於初學者而言,你最應該優先考慮的是,哪些東西構成了程序的基礎?
最經典的一句話: 程序 = 數據結構 + 演算法 。
如果說編程語言是程序的血肉,那麼演算法就是程序的靈魂。
人不能沒有血肉之軀,但是沒有靈魂的人依然只是一個死人。
不能單純依靠演算法衡量一個程序員的好壞,但是面試的時候考演算法絕對是簡單高效的篩選手段。近些年大廠的面試幾乎必考演算法也是這個原因。每一個演算法學的不扎實的程序員,在面試的時候都很慌。
下面這些書籍應該是演算法方面最常見的經典書籍。我有幸都讀過,有些讀完了,有些半途而廢,不過基本上也都算是熟悉。順序上由易到難,從薄到厚,每本書下面我會簡單的介紹一番,希望能對你的學習有所幫助。
首先是兩本演算法入門書籍,也可以當做演算法讀物:
《啊哈!演算法》
用他的自我介紹的來講:「這不過是一本有趣的演算法書而已,和別的演算法書比較,如果硬要說它有什麼特點的話,那就是你能看懂它。」
圖文並茂,而且畫風有趣,適合新手入門,但是代碼是C的,看著比較累,文字也略顯冗長。
圖是非常棒的,啟蒙用,非教科書
《演算法圖解》
和《啊哈》類似,他的介紹是:「像小說一樣有趣的演算法入門書。」
書裡面講的很好,python代碼也很容易讀懂,比之《啊哈!演算法》,書中的例子沒有那麼有趣,但是圖很清晰,文字和代碼不冗雜。
缺點同樣是非教科書,非常淺顯,三四個小時就看完了。有一種剛剛熱身的感覺。
接下來這幾本都是最常見的書了:
《數據結構與演算法分析C語言描述》
這本書的作者幾乎不浪費筆墨在一些簡單的地方。書很薄,但是覆蓋面很廣很深,作者實在是非常厲害。
不過反過來說,就是有些地方講的語焉不詳……
這本書還有Java語言版本的,但是相比之下C的更好一些。
挺好的一本書。
還有一點是翻譯不是很給力,好多人都沒堅持看完。
《數據結構與演算法Python語言實現》
英文版評分非常高,中文版評分非常低……
據說是也翻譯的不好。另外就是本書自身錯誤也不少……幾版過後依然很多沒有改過來。
書中數學證明和介紹比較簡單。因為採用Python語言的原因,比較易讀。
淺顯易懂,內容上循序漸進,環環相扣。相比於上一本,我會更推薦一些。厚度也不算厚。
《數據結構與演算法 Python語言描述》
北大教授裘宗燕的書,這本書前面寫的挺好的,尤其是在面向對象還有ADT等思想的闡述,都很不錯。
但是讀到後來給我一種虎頭蛇尾的感覺,前面氣勢如虹緒論就寫了很長,最後三章感覺有點草草收尾的意思。就像編輯在催稿,而作者很忙的樣子……
另外就是這本書的編排順序我個人也不是特別喜歡。
接下來是兩本大部頭,都是非常厚的書。
他們最大的特點就是:出現率遠大於看完率
《演算法導論》
演算法書中的權威,MIT的6.046J就是按照這個來講的。
公認最好的演算法書,組織結構合理,內容詳盡。引導讀者從思維方式上對演算法進行領悟。
書中對演算法的數學結構進行了詳盡的闡述。有非常多的數學證明。
這本書我說不出什麼缺點,只能說有些內容是因為我還沒到大牛的境界,暫時還無法體會理解。
我個人的觀點是:不要糾結於詳細的偽代碼,不用糾結於連篇累牘的講解。體會其中演算法的精髓就好。
《演算法》第四版
如果說,《演算法導論》是學術上最好書,那這本應該是實際應用最好的書。
它對數學的要求比《演算法導論》低很多,摒棄了演算法的證明。
書中具體給出了每位程序員應知應會的50個演算法,深入淺出,大量圖解。非常棒。
java基礎的話你能擼出來Hello World基本上就可以開始看這本書了,這本書最大的不友好之處在於它的第一章非常長,沒看過的人又不知道哪裡可以跳過。
這本書後面的翻譯感覺不如前邊了,不知道是換人了還是DDL了……
翻開書就會看到很多的圖,配套作者在coursera上面的課程學的話事半功倍!
接下來的幾本我看的比較少,簡單介紹一下,希望大家自己去發現和了解,不要漏下這些好書:
《編程珠璣》
很薄一本啊,但是我放在那還沒看完……
這本書被稱為: 歷史 上最偉大的計算機科學著作之一
融深邃思想、實戰技術與趣味軼事於一爐的奇書。
內容不深,但是不是一個知識點一個知識點的給你講解演算法原理的。
這本書的核心思想是讓你了解如何正確選擇和高效地實現演算法。書中還有一些趣聞軼事,看著倒是很有意思~
有興趣的同學可以看看~
《演算法競賽入門經典》系列
演算法競賽入門經典書,ACM必備書籍吧算是。書中題目對於競賽來說比較簡單,但是對於一般我們平時工程來說偏難。語言用的是C/C++,請好好做例題好好做作業,讀書的時候好好思考和復習~
反正我是沒讀過,捂臉……
《劍指Offer》
這個書很有意思,對於在校生來說我個人覺得是必看的書。沒有任何工作經驗的同學在面試的時候真的會被問懵的。這本書可以讓你了解如何應付考官日常問題,在解答面試問題的時候,書中很多方法和思路會讓考官覺得你思考的很全面,給你加不少分。
我面試的時候也曾快速掃過一遍這本書,讓我在回答問題的時候條理更清晰。書中代碼是C的,emmm,於是代碼部分我就沒太看……
《用Python解決數據結構與演算法問題》
最後給大家推薦一本在線的 免費 的演算法書。
https://facert.gitbooks.io/python-data-structure-cn/
不是大部頭,也不是讀物,新手入門足夠用,書中介紹了大多數日常需要的演算法,並且講的比較淺顯~轉行的新手基本可以通過這本書來快速掌握常用基本演算法了~
反正免費,是否適合自己看兩頁也就get了~
如果需要PDF版,可以在「程序員必修課」公眾號後台回復:「Python演算法書」獲取。
H. Android大廠面試經驗分享(OPPO,位元組,華為,阿里)
我是從小公司跳出來的,最終入職OPPO,說實話這段時間的經歷讓我深深地感受到,我們為跳槽做的一些臨時抱佛腳的提升跟那些大佬的沉澱比起來太渺小了。我們都知道找資料學習、刷面試題,但也許只能應付這一次的面試,後面還是會技術發愁,那些短時間背下來的東西遲早會忘掉, 大家還是做好長期提升自己的准備,好好沉澱的東西最後才是屬於自己的。
說說當時的面試過程,我是內推獲得的面試機會,很感謝當時幫我內推的兄弟,總共三輪面試,兩輪技術,一輪HR面,當天面試結束。
我10:10分到的公司,10:30開始面試,第一輪面試將近一個小時,聊的點我基本上都答得上來,自我感覺良好。然後面試官讓我等一下,他去叫他們老大來給我二面,我等了有二十幾分鍾吧,二面有一個多小時,這次問的比較深,有些地方答的有些嗑吧,總體來說我自己是滿意的。HR面約到下午了,整個流程下來每輪面試官都讓人感覺很不錯,我自己做的准備也讓我面試感覺下來很爽。
我把面試遇到過的以及自己學慣用到過相關內容都整理到一起了,方便自己進行復盤和後續的查漏補缺:
一、 Java基礎
1.1 靜態內部類和非靜態內部類的比較
1.2 多態的理解與應用
1.3 java方法的多態性理解
1.4 java中介面和繼承的區別
1.5 線程池的好處,詳解,單例(絕對好記)
1.6 線程池的優點及其原理
1.7 線程池的優點(重點)
1.8 為什麼不推薦通過Executors直接創建線程池
1.9 不怕難之BlockingQueue及其實現
1.10 深入理解ReentrantLock與Condition
1.11 Java多線程:線程間通信之Lock
1.12 Synchronized 關鍵字原理
1.13 ReentrantLock原理
1.14 HashMap中的Hash沖突解決和擴容機制
1.14 Java並發
1.15 Java虛擬機
1.16 JVM常見面試題
1.17 JVM內存結構
1.18 類載入機制/雙親委託
二、 Android基礎
2.1 Activity知識點(必問)
2.2 Fragment知識點
2.3 Service知識點
2.4 Intent知識點
2.5 數據存儲
三、UI控制項篇
3.1 屏幕適配
3.2 主要控制項優化
3.3 事件分發與嵌套滾動
3.4 動態化頁面構建方案
四、網路通信篇
4.1 網路協議
五、架構設計篇
5.1 MVP架構設計
5.2 組件化架構
六、性能優化篇
6.1 啟動優化
6.2 內存優化
6.3 繪制優化
6.4 安裝包優化
七、源碼流程篇
7.1 開源庫源碼分析
7.2 Glide源碼分析
7.3 day 20 面試題:Glide面試題
7.4 聊一聊關於Glide在面試中的那些事
7.5 面試官:簡歷上如果寫Glide,請注意以下幾點…
7.6 Glide OOM問題解決方法匯總
7.7 LeakCanary源碼分析
7.8 OkHttp源碼分析
7.9 okhttp連接池復用機制
7.10 okhttp 流程和優化的實現
7.11 一篇讓你受用的okhttp分析
7.12 OkHttp面試之–OkHttp的整個非同步請求流程
7.13 OkHttp面試之–HttpEngine中的sendRequest方法詳解
7.14 OkHttp解析大總結
7.15 Okhttp任務隊列工作原理
7.16 Android高頻面試專題 - 架構篇(二)okhttp面試必知必會
7.17 Android 網路優化,使用 HTTPDNS 優化 DNS,從原理到 OkHttp 集成
7.18 Retrofit源碼分析
7.19 RxJava源碼分析
7.20 RxJava原理與源碼分析
7.21 RxJava如何進行線程切換的?
7.22 Rxjava內存泄漏防止方案——RxLifecycle,AutoDispose,RxLife框架
7.23 Tinker源碼分析
7.24 ARouter源碼分析
7.25 Android框架層源碼解析
7.26 演算法設計
八、新技術篇
8.1 實戰問題篇
九、面試篇
9.1 開源文檔
9.2 面試文獻
以上就是我的學習和面試積累,有自己面試經歷過的,也有整理的一些大廠面試題,篇幅有限,具體內容就不展示了,我已經整理成文檔了。
還是開頭說的,僅靠面試期間臨時抱佛腳和刷題對自身發展不是長久之計,做好長期提升的規劃,好好沉澱每一次的學習和面試經歷,把這些最終都轉化成屬於自己的東西才是實質上對自己最有用的。
I. 秋招筆試演算法題不會做還怎麼辦
可以通過不斷地思考,總結,歸納,不斷刷題來提高自己演算法題的水平,沒有什麼困難的,你需要盡力去學習,祝取得好成績。
如何提高學習效率
時間長並不一定有用,問題的關鍵是:你的單位時間內的學習效率有多高!看著同學們一天到晚都在學習,但為什麼效果不佳?這是一個學習中的老大難問題,也是最令家長、老師、學生感到困惑的問題。解答這個問題的鑰匙就是利用效率法則——高效利用時間,提高學習效率。
在伏爾泰的作品中曾經提到過一個謎語:「世界上有一樣東西,它是最長的也是最短的,它是最快的也是最慢的,它最不受重視但卻又最受惋惜。
沒有它,什麼事也無法完成,這樣的東西可以使你渺小的消滅,你偉大的永續不絕。善於利用時間學習中,不僅要懂得珍惜時間,更要學會運籌時間,使自己在最短的時間內,得到最大的學習效合理分配精力在學習中。
學會排除干擾在學習中,來自外界和自身的一些干擾都會影響你的學習效率,你必須要學會排除和隔離這些學習中的消極因素,將它們的負面效應降到最低你想到這樣唯一的東西是什麼了嗎?沒錯,它就是時間。
學習是在時間中進行的。無可置疑,誰能擁有更多的時間,誰就能獲得更多的知識。長久以來,人們一直在探索怎樣勒住時間的韁繩,以增強自己利用時間的能力。掌握一些高效利用時間的方法,如優化事序、最佳安排、排除干擾等方法能使你的有效學習時間比別人多很多倍。