如何準備算法校招面試?

我是自動化專業的應屆研究生,最終拿到了tplink、華爲、vivo等公司的ssp的offer,分享自己學習過的計算機基礎知識(C語言+操作系統+計算機網絡+linux)以及數據結構與算法的相關知識,保證看完讓你有所成長。
歡迎關注我,學習資料免費分享給你哦!還有其他超多學習資源,都是我自己學習過的,經過過濾之後的資源,免去你還在因爲擁有大量資源不知如何入手的糾結,讓你體系化學習。

在這裏插入圖片描述

什麼是算法面試?

算法面試只是技術面試的一部分,大家要意識到算法只是技術的一部分,技術還包括計算機基礎知識、項目中的經驗,解決問題的思路等等,因此不要把算法面試當作技術面試的全部。不要一提到軟件崗位就是刷題。

能夠解出來算法題很重要,但是擁有合理的解題思路更重要,也是解決問題的前提,面試考算法,也是在考查你的思考方式,如何思考算法題的,需要你向面試官展示你的思考問題的方式。善於與面試官進行溝通,不要上來就寫代碼,先好好思考這個題可能出現的情況,然後與面試官溝通是否需要處理某些特殊情況等等。與面試官一起探討這些問題一是更加深入理解問題,二是趁機顯示自己的功利,有意識的將自己會的知識告訴面試官,讓他的問題向這個方面靠攏。

對於一個算法題目的正確解答還包括你對這個問題自己的獨特的見解;在解決出來之後,還能做進一步的優化;寫出來的代碼對於非法輸入都有良好的處理,代碼規範性很好;如果一個算法問題很難,不要灰心,嘗試將自己的想法與面試官溝通,不要氣餒。

算法面試好不一定代表着面試優秀

還是強調算法面試只是技術面試的一部分,一般公司上來會先讓你寫一道算法題目,然後圍繞這個算法題目展開一些討論。但是這只是面試中的一部分,另一部分就是項目,所以準備面試還要充分準備項目。如何充分準備項目呢?我覺得有以下幾點。

1.找到你所面試崗位所關注的技術,然後找到能在項目中體現的地方,重點突出出來。比如匯頂科技的單片機崗位,他們關注的就是你是否使用過單片機,用單片機解決了什麼問題,如何應用的。我一個同學面試,簡歷就沒有提及這個內容,面試官第一句就是你用過單片機嗎,然後直接就pass了。

2.準備好項目中的相關聯的知識點,因爲面試官很可能是從你項目中去引申出去,去提問你。比如我做的嵌入式軟件項目,都會用到中斷的嘛,所以不論是中興還是海康威視在面試中都根據項目中的這個描述,問了一些關於中斷的問題。現在一般軟件的項目應該都會用到計算機網絡,所以很可能就會延伸去問計算機網絡的相關知識。這裏還需要注意的是自己不會的東西千萬別往簡歷寫,因爲你不寫問道了,可以說不會,也不會怎麼樣,但是你寫了,卻說不會,會讓面試官感到反感。

3.準備好項目的介紹。面試官在面試你的時候,首先會讓你挑一個項目或者他選一個項目讓你去講一講。這也是一個關鍵的內容,一個可以展示你對項目的瞭解和你在項目中所做的工作,另一個展示你的表達能力,能不能把事情講解明白。所以這一部分也需要好好準備一下。我在提前批的面試中,其實這部分做的非常不好,因爲面試官面試完之後,沒有覺得面試官表現出什麼興奮感或者說很滿意的感覺,覺得很一般的水平或者說達不到他們的標準。後面經過反思,修正和自己的嘗試,到華爲面試的時候,面完之後,面試官都是滿意的笑容,甚至還稱讚幾句。所以說同樣的項目,不同的表達方式和突出的重點不同,獲得的面試效果是不同的。

介紹一下我自己的心得。

  • 對於一個項目,首先簡單介紹一下這個項目的背景,做的什麼,解決什麼問題,讓面試官稍微瞭解一下背景和需要實現的任務(也就是用戶需求),劃重點——簡單,別說的太多,這裏不是重點,可以結合紙筆一類的,在紙上畫一畫項目系統的組成等等。
  • 然後就可以介紹整個項目的所有功能,人員分配以及如何分工的,你是負責哪一部分的呢。一個是很多企業對於你們如何合作也是關心的,另一個是展示出你的總體能力,對於整個項目的瞭解和你所做的工作在整個項目中的地位有很深的理解。
  • 在之後就可以詳細介紹了你具體做了什麼工作。劃重點,請注意此處你的工作裏一定要出現亮點,比如你提出了什麼特別的辦法,解決了什麼難題;或者是你在原來實驗室的基礎上做了什麼改進。比如我自己的話,一般就是提我們實驗室的代碼寫的很亂,我在項目中應用的時候就是將整個代碼重構,按照功能層級重新封裝架構代碼。
  • 最後,介紹完自己的所做的工作和工作中的亮點之後,可以總結一下這個項目取得的成就。介紹完的最後你在給面試官拋出幾個亮點來。你在項目過程中遇到的幾個棘手的問題,如何發現問題,定位問題,解決問題。這個亮點一出,一個是體現你在實際項目中的解決問題的思維過程,這也是企業對於一個人的重要考量。另一個也是能夠體現出你對項目的真正瞭解,展示你真正參與了這個項目。這個問題我記得在中興、華爲二面三面還有tplink的面試中都有問過。其中華爲問的最深,我覺得也是想深入瞭解你是否真正參加過這個項目。

4.提前準備好一些能夠體現你行爲方式問題的答案。這些問題比如說

  • 遇見過的最大挑戰
  • 犯過的錯誤,如何解決的
  • 與合作的人工作中遇到衝突如何解決的
  • 做的與衆不同的事情

5.面試的最後,一般面試官會讓你向他提問,提前準備好問題。

  • 內部如何對待新人的培訓
  • 我會有怎樣的發展機會

如何準備算法面試

要多關注基礎的數據結構與算法,基礎的算法設計思想。面試中的題目不會特別難。高級數據結構除非特定崗位纔會考查。

  • 各種排序算法(手寫快排)
  • 基礎的數據結構和算法實現:堆、二叉樹、圖
  • 基礎算法:如圖的遍歷、二分查找
  • 算法設計思想:遞歸與回溯、分治、貪心和動態規劃

一味地刷題效果是不明顯的,只是盲目的刷題,只是關心題的正確與否,是很片面的,你可能只是會了一道題,如果使用相同方法的新題目出現,你可能就不會了,所以還是要先鞏固好基礎的算法與數據結構,算法設計思想,通過題來鞏固這些知識,要掌握好學習和做題之間的平衡。後面在來總結一下學習算法的經驗。這裏先不展開了。

如何解決算法面試問題

1.關注題目中的條件

  • 給定一個有序數組,有序可能就是二分查找
  • 設計一個O(nlogn)的算法,可能就是先排序或者分治算法
  • 不需考慮額外的空間,可能就是以空間換時間

2.不會做的時候,就暴力法,先把暴力法寫出來,然後在進行優化

3.如何優化

  • 在腦子查找一遍常用的算法思想看看能不能用上(遞歸、回溯、動態規劃)
  • 常見的數據結構(一般是棧、隊列)
  • 使用哈希表來實現空間換時間
  • 對數組進行預處理,排序去重之類的,比如有重複數字的全排列問題

4.實際寫代碼的時候,注意考慮邊界條件

指針爲空,數組爲空,字符串爲空等。

這就是我個人對面試中的一些經驗總結,希望對大家有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章