導航:首頁 > 面試求職 > 演算法面試流程

演算法面試流程

發布時間:2021-02-12 09:38:55

❶ 華為的演算法工程師面試大概會問哪些需要提前做哪些准備

准備常規演算法,離散知識,或者手撕代碼。我後台轉演算法,面試的時候就是這些,因面試官而異,僅供參考。

❷ 做圖像類演算法面試的時候會不會面試數學

我在《再談逗我是怎麼招程序員地》中比較保守地說過,逗問難的演算法題並沒有錯,錯的很多面試官只是在膚淺甚至錯誤地理解著面試演算法題的目的。地,今天,我想加強一下這個觀點——我反對純演算法題面試!(注意,我說的是純演算法題)圖片源Wikipedia(點擊圖片查看詞條)我再次引用我以前的一個觀點——能解演算法題並不意味著這個人就有能力就能在工作中解決問題,你可以想想,小學奧數題可能比這些題更難,但並不意味著那些奧數能手就能解決實際問題。好了,讓我們來看一個示例(這個示例是昨天在微博上的一個討論),這個題是——逗找出無序數組中第2大的數地,幾乎所有的人都用了O(n)的演算法,我相信對於我們這些應試教育出來的人來說,不用排序用O(n)演算法是很正常的事,連我都不由自主地認為O(n)演算法是這個題的標准答案。我們太習慣於標准答案了,這是我國教育最悲哀的地方。(廣義的洗腦就是讓你的意識依賴於某個標准答案,然後通過給你標准答案讓你不會思考而控制你)功能性需求分析試想,如果我們在實際工作中得到這樣一個題 我們會怎麼做看我一定會分析這個需求,因為我害怕需求未來會改變,今天你叫我找一個第2大的數,明天你找我找一個第4大的數,後天叫我找一個第100大的數,我不搞死了。需求變化是很正常的事。分析完這個需求後,我會很自然地去寫找第K大數的演算法——難度一下子就增大了。很多人會以為找第K大的需求是一種逗過早擴展地的思路,不是這樣的,我相信我們在實際編碼中寫過太多這樣的程序了,你一定不會設計出這樣的函數介面 —— Find2ndMaxNum(int* array, int len),就好像你不會設計出 DestroyBaghdad(); 這樣的介面,而是設計一個DestoryCity( City& ); 的介面,而把Baghdad當成參數傳進去!所以,你應該是聲明一個叫FindKthMaxNum(int* array, int len, int kth),把2當成參數傳進去。這是最基本的編程方法,用數學的話來說,叫代數!最簡單的需求分析方法就是把需求翻譯成函數名,然後看看是這個介面不是很二看!(註:不要糾結於FindMaxNum()或FindMinNum(),因為這兩個函數名的業務意義很清楚了,不像Find2ndMaxNum()那麼二)非功能性需求分析性能之類的東西從來都是非功能性需求,對於演算法題,我們太喜歡研究演算法題的空間和時間復雜度了。我們希望做到空間和時間雙豐收,這是演算法學術界的風格。所以,習慣於標准答案的我們已經失去思考的能力,只會機械地思考演算法之內的性能,而忽略了演算法之外的性能。如果題目是——逗從無序數組中找到第K個最大的數地,那麼,我們一定會去思考用O(n)的線性演算法找出第K個數。事實上,也有線性演算法——STL中可以用nth_element求得類似的第n大的數,其利用快速排序的思想,從數組S中隨機找出一個元素X,把數組分為兩部分Sa和Sb。Sa中的元素大於等於X,Sb中元素小於X。這時有兩種情況:1)Sa中元素的個數小於k,則Sb中的第 k-|Sa|個元素即為第k大數;2) Sa中元素的個數大於等於k,則返回Sa中的第k大數。時間復雜度近似為O(n)。搞學術的nuts們到了這一步一定會歡呼勝利!但是他們哪裡能想得到性能的需求分析也是來源自業務的!我們一說性能,基本上是個人都會問,請求量有多大看如果我們的FindKthMaxNum()的請求量是m次,那麼你的這個每次都要O(n)復雜度的演算法得到的效果就是O(n*m),這一點,是書獃子式的學院派人永遠想不到的。因為應試教育讓我們不會從實際思考了。工程式的解法根據上面的需求分析,有軟體工程經驗的人的解法通常會這樣:1)把數組排序,從大到小。2)於是你要第k大的數,就直接訪問 array[k]。排序只需要一次,O(n*log(n)),然後,接下來的m次對FindKthMaxNum()的調用全是O(1)的,整體復雜度反而成了線性的。其實,上述的還不是工程式的最好的解法,因為,在業務中,那數組中的數據可能會是會變化的,所以,如果是用數組排序的話,有數據的改動會讓我重新排序,這個太耗性能了,如果實際情況中會有很多的插入或刪除操作,那麼可以考慮使用B+樹。工程式的解法有以下特點:1)很方便擴展,因為數據排好序了,你還可以方便地支持各種需求,如從第k1大到k2大的數據(那些學院派寫出來的代碼在拿到這個需求時又開始撓頭苦想了)2)規整的數據會簡化整體的演算法復雜度,從而整體性能會更好。(公欲善其事,必先利其器)3)代碼變得清晰,易懂,易維護!(學院派的和STL一樣的近似O(n)復雜度的演算法沒人敢動)爭論你可能會和我有以下爭論,如果程序員做這個演算法題用排序的方式,他一定不會像你想那麼多。是的,你說得對。但是我想說,很多時候,我們直覺地思考,恰恰是正確的路。因為逗排序地這個思路符合人類大腦處理問題的方式,而使用學院派的方式是反大腦直覺的。反大腦直覺的,通常意味著晦澀難懂,維護成本上升。就是一道面試題,我就是想測試一下你的演算法技能,這也扯太多了。沒問題,不過,我們要清楚我們是在招什麼人看是一個只會寫演算法的人,還是一個會做軟體的人看這個只有你自己最清楚。這個演算法題太容易誘導到學院派的思路了。是的這道逗找出第K大的數地,其實可以變換為更為業務一點的題目——逗我要和別的商戶競價,我想排在所有競爭對手報價的第K名,請寫一個程序,我輸入K,和一個商品名,系統告訴我應該訂多少價看(商家的所有商品的報價在一數組中)地——業務分析,整體性能,演算法,數據結構,增加需求讓應聘者重構,這一個問題就全考了。你是不是在說演算法不重要,不用學看千萬別這樣理解我,搞得好像如果面試不面,我就可以不學。演算法很重要,演算法題能鍛煉我們的思維,而且也有很多實際用處。我這篇文章不是讓大家不要去學演算法,這是完全錯誤的,我是讓大家帶著業務問題去使用演算法。問你業務問題,一樣會問到演算法題上來。小結看過這上面的分析,我相信你明白我為什麼反對純演算法面試題了。原因就是純演算法的面試題根本不能反應一個程序的綜合素質!那麼,在面試中,我們應該要考量程序員的那些綜合素質呢看我以為有下面這些東西:會不會做需求分析看怎麼理解問題的看解決問題的思路是什麼看想法如何看會不會對基礎的演算法和數據結構靈活運用看另外,我們知道,對於軟體開發來說,在工程上,難是的下面是這些挑戰:軟體的維護成本遠遠大於軟體的開發成本。軟體的質量變得越來越重要,所以,測試工作也變得越來越重要。軟體的需求總是在變的,軟體的需求總是一點一點往上加的。程序中大量的代碼都是在處理一些錯誤的或是不正常的流程。所以,對於編程能力上,我們應該主要考量程序員的如下能力:設計是否滿足對需求的理解,並可以應對可能出現的需求變化。

❸ 面試演算法題一般給多少時間

主要是讓你用計算機就可以啊

❹ 計算機視覺演算法工程師筆試主要什麼內容

你好,領學網為你解答:
計算機視覺部分:
1、考察特徵點匹配演算法,輸入兩幅圖像中的特徵點對,輸出匹配的特徵點對,(128維描述子)距離計算函數已給出無需考慮復雜度。編寫偽代碼,分析演算法復雜度;
2、考察圖像旋轉。左邊圖像時旋轉一定角度後的圖像(有黑邊),右邊為正常圖像。已知兩幅圖像都為WxH,以及左圖像與四邊的切點A1A2A3A4,設計旋轉演算法使左圖像變換矯正成右圖像,編寫偽代碼,分析演算法復雜度及優缺點;
3、主要考察雙目視覺中的標定知識。給出了雙目視覺的成像原理圖及相關定理和表達。第一小題,需要證明x'Fx=0 x'x為左右圖像中的匹配點對,並要求給出F矩陣的秩;第二小題要求推導出最少可由多少對左右圖像中匹配點可以推導出F矩陣;
4、要求寫出圖像處理和計算機視覺在無人飛行器中的3個重要應用。給出理由和解決方案並分析。
圖像處理部分:
1、主要考察一維中值濾波,退化為區間濾波 編寫偽代碼,分析演算法復雜度;
2、主要考察二維中值濾波,編寫偽代碼,分析演算法復雜度;
3、如何去除脈沖雜訊,圖像中有大量隨機產生的255和0雜訊;
4、考察加權中值濾波公式推導以及一維加權中值濾波
控制部分:
對象舉例均為四旋翼無人飛行器,各題目要求設計控制器,給出控制率,還有觀測方案設計等等;有一題比較簡單就是說明PID的各部分含義以及如何調節。
希望幫到你!

❺ 前端的演算法面試還可以怎麼問

我的 2018 年前端押題說了,以下三個准備一下即可:
八種排序演算法
二分查找演算法
反轉二叉樹演算法

不要問為什麼,信我就學,面試效果會告訴你一切。

❻ 要面試演算法工程師,大神給點相關經驗啊

演算法是比較復雜又基礎的學科,每個學編程的人都會學習大量的演算法。而根據統計,以下這18個問題是面試中最容易遇到的,本文給出了一些基本答案,供演算法方向工程師或對此感興趣的程序員參考。
1)請簡單解釋演算法是什麼?
演算法是一個定義良好的計算過程,它將一些值作為輸入並產生相應的輸出值。簡單來說,它是將輸入轉換為輸出的一系列計算步驟。
2)解釋什麼是快速排序演算法?
快速排序演算法能夠快速排序列表或查詢。它基於分割交換排序的原則,這種類型的演算法佔用空間較小,它將待排序列表分為三個主要部分:
·小於Pivot的元素
·樞軸元素Pivot(選定的比較值)
·大於Pivot的元素
3)解釋演算法的時間復雜度?
演算法的時間復雜度表示程序運行完成所需的總時間,它通常用大O表示法來表示。
4)請問用於時間復雜度的符號類型是什麼?
用於時間復雜度的符號類型包括:
·Big Oh:它表示小於或等於目標多項式
·Big Omega:它表示大於或等於目標多項式
·Big Theta:它表示與目標多項式相等
·Little Oh:它表示小於目標多項式
·Little Omega:它表示大於目標多項式
5)解釋二分法檢索如何工作?
在二分法檢索中,我們先確定數組的中間位置,然後將要查找的值與數組中間位置的值進行比較,若小於數組中間值,則要查找的值應位於該中間值之前,依此類推,不斷縮小查找范圍,直至得到最終結果。
6)解釋是否可以使用二分法檢索鏈表?
由於隨機訪問在鏈表中是不可接受的,所以不可能到達O(1)時間的中間元素。因此,對於鏈表來說,二分法檢索是不可以的(對順序鏈表或排序後的鏈表是可以用的)。
7)解釋什麼是堆排序?
堆排序可以看成是選擇排序的改進,它可以定義為基於比較的排序演算法。它將其輸入劃分為未排序和排序的區域,通過不斷消除最小元素並將其移動到排序區域來收縮未排序區域。
8)說明什麼是Skip list?
Skip list數據結構化的方法,它允許演算法在符號表或字典中搜索、刪除和插入元素。在Skip list中,每個元素由一個節點表示。搜索函數返回與key相關的值的內容。插入操作將指定的鍵與新值相關聯,刪除操作可刪除指定的鍵。
9)解釋插入排序演算法的空間復雜度是多少?
插入排序是一種就地排序演算法,這意味著它不需要額外的或僅需要少量的存儲空間。對於插入排序,它只需要將單個列表元素存儲在初始數據的外側,從而使空間復雜度為O(1)。
10)解釋什麼是「哈希演算法」,它們用於什麼?
「哈希演算法」是一個哈希函數,它使用任意長度的字元串,並將其減少為唯一的固定長度字元串。它用於密碼有效性、消息和數據完整性以及許多其他加密系統。
11)解釋如何查找鏈表是否有循環?
要知道鏈表是否有循環,我們將採用兩個指針的方法。如果保留兩個指針,並且在處理兩個節點之後增加一個指針,並且在處理每個節點之後,遇到指針指向同一個節點的情況,這只有在鏈表有循環時才會發生。
12)解釋加密演算法的工作原理?
加密是將明文轉換為稱為「密文」的密碼格式的過程。要轉換文本,演算法使用一系列被稱為「鍵」的位來進行計算。密鑰越大,創建密文的潛在模式數越多。大多數加密演算法使用長度約為64到128位的固定輸入塊,而有些則使用流方法。
13)列出一些常用的加密演算法?
一些常用的加密演算法是:
·3-way
·Blowfish
·CAST
·CMEA
·GOST
·DES 和Triple DES
·IDEA
·LOKI等等
14)解釋一個演算法的最佳情況和最壞情況之間有什麼區別?
·最佳情況:演算法的最佳情況解釋為演算法執行最佳的數據排列。例如,我們進行二分法檢索,如果目標值位於正在搜索的數據中心,則這就是最佳情況,最佳情況時間復雜度為0。
·最差情況:給定演算法的最差輸入參考。例如快速排序,如果選擇關鍵值的子列表的最大或最小元素,則會導致最差情況出現,這將導致時間復雜度快速退化到O(n2)。
15)解釋什麼是基數排序演算法?
基數排序又稱「桶子法」,是通過比較數字將其分配到不同的「桶里」來排序元素的。它是線性排序演算法之一。
16)解釋什麼是遞歸演算法?
遞歸演算法是一個解決復雜問題的方法,將問題分解成較小的子問題,直到分解的足夠小,可以輕松解決問題為止。通常,它涉及一個調用自身的函數。
17)提到遞歸演算法的三個定律是什麼?
所有遞歸演算法必須遵循三個規律:
·遞歸演算法必須有一個基點
·遞歸演算法必須有一個趨向基點的狀態變化過程
·遞歸演算法必須自我調用
18)解釋什麼是冒泡排序演算法?
冒泡排序演算法也稱為下沉排序。在這種類型的排序中,要排序的列表的相鄰元素之間互相比較。如果它們按順序排列錯誤,將交換值並以正確的順序排列,直到最終結果「浮」出水面。
滿意記得採納哈

❼ 如何准備互聯網公司面試(演算法相關)

書籍: 《演算法導論》 這本是大部頭,很多人都看不完。我本人也並沒有看完,它跟了我這么多年,完全是屬於常看常新的牛書。每一次看,都發現會有新的收獲。比如,以前並不知道求K位數或者中位數有平均為O(n)復雜度的演算法。看到了別的地方的參考資料,才知道,原來《算導》上專門有一小節講這個內容。我基本上是本科比較集中的看了一遍,研一的時候又集中的看了一遍,才算是粗略的看完。但是其實,很多理論性的,以及圖論一部分依然還是沒有看完。個人推薦,先從簡單的開始,挑選比較熟悉的一些偏重與數據結構方面的知識作為起點。這本書的習題非常重要,要是有時間,能夠全部做完,那絕對是能夠神功在手了。其實,集中把,第二部分(排序),第三部分(數據結構),第四部分(高級設計,我基本主要看動態規劃和貪心),第五部分(高級數據結構,B樹和二項堆,並差集),第六部分(圖演算法,最大流部分較難,自己可以看情況掌握)。這些部分可以先從演算法本身開始,偽代碼全部看懂。因為演算法導論講的很詳細,而且有來龍去脈,基本不會有太大難度。數學證明,推薦大家掌握,但是,突擊或者第一次,可以選擇性的看看。我自己是重復看,才把證明看掉的。第一次看的時候,基本都跳過了。不過,證明和習題是精髓!希望如果有時間,一定要補回來。 《編程之美》《挑戰編程》 這本書絕對是將全中國企業,或者說是一部分懶惰的企業面試題庫提升了一個檔次的一本神書。網路面我師兄的時候,我師兄直接把有一道題的最優解答出來了。但是,那個面試官顯然是不知道最優解,一直在引導我師兄答出,這本書裡面的第四個解。呵呵。書很不錯。全部看一遍並不難。說個不好聽的,可以背下來,而且相信我,基本上絕對有用!比如說,n!後面有多少個0。我相信,你們今年面試或者筆試,一定會碰到這道題。《挑戰編程》大家可以自行考慮一下吧,這個完全是針對acm競賽的,不過,看看題也不錯。 《編程珠璣》 業界神書嘛。習題全部做完就是了。其實都是些小東西,但是,基本上一步步考察你的解決問題的能力。個人覺得,最常用的就是bit map做排序或者去重,拓展一下就是bloom filter,我當時都是在這本書裡面看到的。 《演算法技術手冊》 這本書貌似出鏡不多。書很薄,代碼寫的非常好,其實基本上全部都是基礎演算法和數據結構的實現。但是,它牛逼就在於,代碼寫的太好了,基本上,看一遍,絕對能背下來。面試基礎很重要。基本上每個筆試或者面試,都會考一個100行以內的小程序。比如,給定一棵樹,以及其中一個節點x,要求出這棵樹的中序遍歷序列中,x的後續節點,非遞歸實現。這種題非常簡單,但是,真正寫對的,其實並不多。《STL源碼剖析》《C標准庫》 都不厚。挑著看一遍非常舒服。特別是,看看STL每個數據結構迭代器類型啊,紅黑書如何實現啊。C標准庫,最常見的,比如strcpy()和memcpy()有什麼區別啊。特別是,STL,看過之後,對泛型還是能有一定了解的。《C專家編程》《Effective c++》《深度探索C++對象模型》 第一本比較簡單,可以當八卦書看。後兩本其實也沒啥好說的,其實都是些業界公認的牛書。我再重復一遍也沒什麼意義。但是,的確,考察基本上也就都是這么幾本書上面的東西。基本上後兩本主要側重看c++對象方面的一些指示,特別是多態相關的。 《具體數學》《組合數學》 這兩本其實可以看作修身養性的書。我當時是時間比較充裕的時候看完的。純突擊,大家就可以跳過了。但是,看完真的很有用。比如說,你們就可以跟面試官扯約瑟夫環的構造解了(這道題我覺得80%會遇到),直接推推公式,就不用寫模擬代碼了。《組合數學》也是,很多筆試一般會有些小智力題。不過,其實一般的題目,不看這本書也可以搞定。所以,這兩本僅供參考。大家有興趣的時候,可以翻翻。《Linux內核源碼剖析》《Linux環境高級編程》…… 要是有機會,能看看最好。因為很多公司都會考察Linux相關的知識。最少要會點腳本,一些簡單的Linux命令,以及正則表達式什麼的。要是能聊聊內核源碼或者驅動開發什麼的東西,面試官肯定更加喜歡了。 知識: c & c++ 首先要知道c和c++的區別。常考的有const的用法,一些生僻關鍵字比如extern,static的用法。 結構體與類的差別。類裡面的字對齊問題,也就是說一個類到底有多大。以及一個空的類有多大。 虛函數以及多態相關的顯然是重點。比如析構函數什麼時候需要寫成虛函數,構造函數是否可以是虛函數。 int a[10]; a 和 &a的區別。 java java我並不熟。但是基本上肯定會考一些虛擬機相關的,以及GC等知識。然後,一般招聘的java程序員都會問到很多多線程編程的東西,以及hadoop!這個絕對是重點,淘寶絕對就是問這個的。 操作系統 這個看工作崗位的實際要求。基本的進程線程區別==肯定是會問到的。要是要求高一些,就會問很多多線程編程的問題。一些競爭死鎖等基礎知識,一些進程調度的演算法,最近的kernel好像用的是CFS調度演算法。shell編程,如何讀取程序堆棧,寫一些core mp的讀取程序等等的。 數據結構 基本上所有的排序都要會寫。與樹有關的操作都要會些非遞歸版本。圖一般考的不多。Flood-Fill演算法等等。查找中位數。B樹和紅黑書最好要掌握,不用會寫,能扯扯基本就行。KMP,這個很有可能考!而且的確真的不好懂。要是實在不行,背下來吧。哈哈。 網路 這個其實比較基礎了。我個人網路方面的知識並不好。但是各種協議的基礎,幾次握手啊,一些操作系統的api實現到底是單工還是雙工用的是TCP還是UDP。我個人網路純粹靠拼RP。 資料庫 資料庫非常重要。基本的SQL肯定是要會的。最常見有一道題,inner join和out join的區別。MySQL是重點,基本上很多企業都是問這個。然後,網路扯多了會跟你扯MySQL引擎 的一些東西。這些我就不太懂了。要是能准備的話,或者說的確是做這方面的,就可以著重多准備下。 大規模數據處理這一塊絕對是重點!而且本身不是一個系統的學科分支。但是,基本上幾家大公司都會問這方面的。推薦先讀讀google那幾篇論文。Page Rank那一篇,然後Map Rece好像有幾篇吧。Big Table什麼的。推薦一個網址。這篇貌似是轉載的,我以前找到的源地址現在找不到了。處理這一類問題基本上思路都是,哈希,map rece以及bit map等等的。對了,推薦看一下外排序以及相關的敗者樹。這些都是大規模數據處理的一些典型問題。掌握了這些其實也就夠了。這塊有點屠龍之技的感覺,特別是對於學生,基本沒有誰能有機會把這些代碼實現出來。但是,沒辦法,這些公司就是喜歡考。看完那篇博客的,然後再自行查找一些資料,基本就夠了。萬變不離其中,而且,這些東西,沒辦法考那麼難的。 推薦一個博客吧,作者收集了100+道面試題,並且全部給出了代碼。把這個全部看完,基本上很多面試筆試,都是這些原題。 推薦Top Language裡面的今天我們思考系列,好幾年前的了。看大牛的思考過程,非常有幫助。希望自己能多想想再看答案。注意,google group好像有時被牆。 我把發芽網的題庫版塊也掃了一遍。 還有好多一時想不起來了。

❽ 大公司筆試面試有哪些經典演算法題目

我的面試遇到的題目,都是直接寫代碼,二分查找+旋轉數組查找,網路和阿裡面試都有問過,鏈表操作:逆置鏈表,逆置後面K個節點,鏈錶快排,這三道題網路遇到過,另外網易遇到過鏈表歸並。

❾ 程序員面試時都要考演算法嗎

看應聘什麼職位...我面試的時候一點演算法都沒有涉及到...
某些特定開發崗位確實需要回扎實的演算法基答礎.比如根雲存儲,大數據什麼的.但是像普通的程序開發崗位應該對演算法要求不大.

所以,我猜測:如果面試跟演算法不怎麼相關的職位考官還問演算法的問題時,應該是你前面的回答還不足以讓考官錄用你。考官在給你展示自己的機會.

❿ 面試和演算法心得 怎麼樣 知乎

考查要點:

對Web標準的理解
瀏覽器差異
CSS基本功:布局、盒模型、選擇器優先順序及使用等內
Javascript 基礎、JS面向對容象實現原理、閉包機制、作用域
通常可以做一些小練習來判斷TA的水平,js 雖然很靈活,但是具體的實現方式能體現出一個人的全局觀,隨著代碼規模的增長,復雜度增加,如何合理劃分模塊實現功能和介面的能力比較重要。這里有一份前不久我出的試題,難度不算大

作者:馬驍
鏈接:http://www.hu.com/question/19568008/answer/12242523
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

閱讀全文

與演算法面試流程相關的資料

熱點內容
晉升考核自我評價 瀏覽:480
職場新人自我介紹日語 瀏覽:700
職攜求職公寓 瀏覽:354
醉駕人找工作 瀏覽:973
百度廈門六中藝術特長報名表 瀏覽:868
勁霸經編面試 瀏覽:364
小孩綜合素質自我評價 瀏覽:470
玉環學校洗碗招聘信息 瀏覽:15
教師教育自我評價 瀏覽:192
2014合肥168中學特長生音樂錄取名單 瀏覽:478
應屆生面試自我介紹範文3分鍾 瀏覽:800
丹陽人才招聘網 瀏覽:72
生物學科特長怎麼寫 瀏覽:250
昌碩面試後多久通知 瀏覽:925
陝西省鐵餅特長生 瀏覽:751
碩展科技有限公司招聘 瀏覽:346
2019年南陽卷煙廠招聘信息 瀏覽:461
時尚招聘信息 瀏覽:341
安吉潔美電子招聘信息 瀏覽:106
個人簡歷問候語 瀏覽:924