程序員在面試的時候,面試官讓其手寫代碼,是否說明面試官很low?
我在2018年底,也經歷了非常多的面試。
其中也不少面試讓我手寫代碼的要求,當一開始面試官提出手寫一個交換兩個變量值的Java代碼。我也比較震驚,因為對於一個從事了6年的java開發人員,面試要求當場寫代碼簡直就是侮辱。
是的,我再一次向生活低下頭顱。誰讓我是求職者,那就寫唄。
然後就寫出了下圖的三種方式實現了java兩個變量交換值。
這時我自信慢慢的交上了自己的成果,沒想到面試官咄咄逼人的問:
你就沒想過用java的反射技術來實現嗎?
我。。。
二話沒說,我起身就走了。。。
想起來現在都還在後悔,後悔當初沒要回我的四頁紙的個人簡歷。。。
這個問題,我很感興趣,我以前遇到過相同的經歷。大學剛畢業那會,找實習單位,去了一家互聯網公司面試,面試官一來就說做份試題再找我吧,然後就摔給了我一張大約有20多道關於各種算法和程序邏輯題目給我,我當時有點懵逼,但想了一想,這不會是故意考察下我的反應吧,於是我自信又肯定的答應了他,面試官當時說給我1個小時時間,用手寫裡面的程序,我二話沒說於是就開始進行,面對各種算法題有些我是有點記不住,畢竟在大學期間運用的不是很熟練,自然而然就不會做,這個時候咋辦呢,我就把那些自己會的,還有記得住的都寫了上去,最後剩下幾道記不住的,可把我慌的,心裡當時陣陣失落,一首涼涼在腦海裡漂浮,最後剩下幾分鐘了,快來收捲了,我於是在上面寫了一句話,這一句話不是專業相關,後來他看了我那句話後覺得很有道理,於是說要跟領導商量下表示願意留下我,我當時真是喜極望外啊,真是運氣,但又一想這還真的有點機智才行。
手寫代碼這一面試流程在國內的一線互聯網公司可以說是可有可無,看面試官個人喜好。有的面試官比較實用主義,根本不會讓你寫代碼的,他們會問一些語言上的基礎知識或者給你設置一個特定情景讓你設計方案。總之,大面上來講,國內應用開發面試硬要求手寫代碼的公司真的不多。
可是國外大廠,像Facebook,google,手寫代碼是必須的面試環節
當然,想去這些地方的人擠破頭,這些公司這樣做,肯也是為了篩選出更加優質的人才。一個偉大的企業,它的需求是60分的人才,但是它會招進來90分的人才。互聯網不是勞動密集型產業,在高速發展的情況下,員工不僅僅能維護好當前產品,更得需要有能力的員工有解決未來問題的能力。所以有遠見的企業,不會因為做的產品用到java web,就去招只會java web的人。
手寫代碼能看出來程序員的什麼能力?
1. 對算法數據結構,算法掌握的熟練程度
很多程序員可能反駁說,什麼數據結構和算法,我上網一搜不就完事了,隨學隨用,不需要熟悉。那我就要問一個問題了,您在說話的時候,會不會去上網查中文?有時上網查算法會不會造成思維的阻塞。我就拿跟同事討論問題舉例吧,你要是特別熟悉某個算法,面對很多搜索的問題,你就可以衍生出很多方案跟同事交流。如果你一個算法都不懂,現場去搜索,你就失去了參與討論的機會。 所以,我的一貫的觀點就是,優秀的程序員需要有一個善於記憶的大腦。
2.寫代碼習慣
這個比較好理解,因為讓你當場寫代碼,你的習慣才能暴露出來。如果是在機器上寫代碼的話,修修補補。但是手寫代碼,一下子就能讓你的習慣暴露出來,比如變量命名不直觀,語法錯誤,代碼風格,是否會崩潰,等等等。anyway, 挺能考驗你的代碼素養的。
3.心裡素質
這個不需要我多說了,因為那種現場感,還有不太適應的手速,都能給你一些看不到的壓力。
當然手寫代碼也有缺點:
有的優秀程序員,儘管對數據結構瞭然於心,算法信手拈來,代碼習慣也好的要命,但他因為個人習慣就是不喜歡手寫代碼。這種人才當然會覺得面試low到爆,也就不屑於參加這種面試了。不過在您diss人家面試官low的時候,也得先看看自己是真的不習慣手寫,還是因為自己基本功不夠紮實,不敢去面試。 我覺得大部分人,屬於第二種情況,包括很多老程序員,老並不代表優秀。
歡迎大家關注我!每天把自己的想法分享給大家。
很有意思的一個話題,面試官讓紙上寫代碼,其實筆試做題目是一樣的意思。正常來講程序員這種職業能力如何基本上幾句話就能探個究竟,面試需要做筆試的公司很多,不用筆試直接面試的公司也是相當多,參加筆試的一般大公司或者規模比較小的一些公司,大公司有筆試主要公司流程決定的,需要走的流程比較多,筆者從事軟件行業十幾年,參加面試好像就做過一次題目,很多老程序員,面試的時候看到有筆試,直接選擇走人。
現在就公司常見的一些考察人的方法在這做個簡單的羅列,筆試,直接面試,上機器寫代碼,正常來講主要這三種方式,可能會採用組合的方式,筆試和上機器寫代碼主要是參照作用,真正起作用的還是直接面對面的交談,可能一句話就能揭露很多技術細節,編程裡面涉及到技術細節繁雜,如果沒有做過或者思維意識不到不可能回答上來,幾個回來下來就大概知道這人的水平如何,然後就這人瞭解的詳細程度做細分的瞭解,正常來講聊的時間越長面試成功的概率越高畢竟大家的時間都很寶貴,誰都不會在一些沒有意義的事情上浪費時間。
經常和一些技術面試官交談如何面試人的經驗,基本上每個人都有自己的風格,曾經項目組裡面有個架構師面試人的時候就直接撂下很多算法,是個問題裡面起碼有六個以上算法問題,基本上很多人都在他手上卡住了,還有一個哥們比較奇葩,面試的時候專門問專業的知識,而且問的相當仔細,總之蘿蔔青菜各有所愛。所以一個人參加面試裡面還有運氣的成分,還有一個眼緣的問題,一旦和麵試官對眼了,那麼事情就比較好辦了,有些時候技術面試的也很不錯,但在交流過程中溝通不是很順暢,這樣面試成功的概率也不會太高。
現在很多國內的軟件公司效仿谷歌面試風格,直接上機去寫代碼,看代碼的實現風格,嚴謹程度,以及代碼執行的效率等等,這種基本上很快就能測試出一個程序員基本的代碼能力以及常見的算法掌握程度,由於這種方式比較耗時需要面試官花費一定的時間去審閱代碼,大部分的公司都不會這麼去做,但這種方式對於編程能力的考驗直觀明瞭。
面試就要平常心對待,無論有沒有筆試都要平常新對待,真要水平過關也不在乎這點筆試內容,寫寫畫畫在平常的項目框架設計過程中也是非常常見的事情,水平高的人也不會在乎這些形式的東西。
希望能夠幫到你。
這個首先我不能說讓你手寫算法的面試官就很low,具體主要是看他讓你寫的是什麼算法或者問的問題是否有深度。
我見過一些面試官,自己本身就是個low逼,問的問題不僅low而且還一副自以為是的樣子,明明答案就是A可是他偏偏要說是B,你還不能跟他爭論,一爭論他就讓你走人。
而至於手寫算法這個事情,就是仁者見仁智者見智的事情。因為每個面試官側重點不一樣。有些人覺得算法這個東西在平時根本用不到,所以你會與不會其實意義沒多少。但是有些面試官卻覺得算法這個東西是基本功或者說是內功,你掌握了基本功,其他的一些語言或者框架可以說是手到擒來。
這裡我講講一個關於美國硅谷的例子。在美國招聘程序員,尤其是那些大公司(谷歌,facebook)的程序員,算法是必問的東西。甚至可以說,你其他的東西會不會其實無所謂,但是你算法必須要會,而且是精通的狀態,因為他問的很難。我之前有個朋友就在谷歌面試過,他說面試就是直接給你一塊白板,然後給你一支筆,他問,你直接在白板上寫算法。通過你寫算法,可以看到你平時編程的一些習慣操作,看看你是否有良好的編程習慣,並且問的問題也非常難。但是如果你通過了他的面試,那麼你想進哪個部門或者想學什麼知識就隨便你了。舉個例子,比如你面試通過之後你想做安卓開發,但是你一開始沒做過這個,其實沒關係,他們覺得你連算法這麼難得東西都能弄好,那麼對於業務層的安卓開發或者底層源碼的改造,給你一個月的時間慢慢學肯定能夠學好的。這就是他們的思考方式,這也就是他們覺得算法或者手寫算法必要的地方。
這個有兩面性。
牛逼的,當然不怕。但即使牛逼,如果你沒有提前過一遍這些算法,也寫不出來,況且算法眾多,你也不知道出哪個。
不牛逼的,肯定掛掉。這個不用說了,但現在有手機在,如果面試官不在場,很容易吧~~
其實,最好的面試套路就是聊思想。如果思路正確,具體的記憶的東西可以忽略。
另外,從面試中如果能聊出對方的性格、個人方向,就更能輔助判斷了。
最後,看眼緣和臨場發揮也是關鍵。
大家好我是小七,一名前端工程師,關注我一起學前端。
這個問題怎麼說呢,先說下我自己吧。
我也經歷過面試要求筆試的,以前剛出來找工作的時候,每次都很害怕筆試,但當時可能因為自己對這個行業確實比較感興趣把,所以每次遇到的筆試也都不太難,之後還所有什麼數組排重的,當時我寫完啦,但由於緊張就個循環的i寫錯啦,當時沒找出來,面試我的人他看完以後說沒問題,但結果沒出來,然後他自己幫我寫,最後寫啦一個多小時沒寫出來。
不過我現在看來面試的筆試問題,經常是在百度上一搜就能搜出結果的,平常我們也是很常用,只是用的時候去copy下代碼而已,所以只知道原理,但去寫的話比較慢,所以我感覺面試筆試都沒事,只要你邏輯沒問題,你可以和麵試官說明你自己的想法。一般不會有太大的問題的。
白紙寫程序是一個很考驗基本功的做法。
寫代碼就是程序員吃飯的傢伙,所以就看你溜不溜。
我們一般會挑一個一聽答案就很顯然的題目,就是那種你張嘴講得頭頭是道的題目。
然後請你用代碼寫出來。
假想一下,以後你在工作中,跟別人討論一個技術方案頭頭是道,你是不是有能力用代碼,把你的方案給實現出來呢?
一般,題目都會特意挑選,儘量是那種稍微知道點編程,甚至不知道編程都能想出策略的題目,比如經典的,兩個 100 位數字相加,求和。
手寫代碼是測試你的能力下限,項目經歷和架構能力是測試你的能力上限,都是瞭解候選人的方法而已。
Talk is cheap, show me the code.
其實我覺得面試官讓程序員手寫代碼,不一定說明面試官LOW。編譯器在編程過程中是不可或缺的,越來越便捷的編譯器,複製黏貼的使用,卻造成了從業者基本功的缺失。
當你使用編譯器時,編譯器的提示功能,編譯器的快捷例程,還有模板等。百分之九十的從業者都會使用,而一旦手寫程序沒有了這些輔助,面試時又不能搜索查找。可以說很嚴格,充分的考察了程序員的基本功,雖然公司一般只注重開發的結果不注重開發過程,但是如果一個基本功不紮實的人開發BUG怕是不會少,對公司的潛在危害太大了。
這個問題問得很有意思,這個問題可以從兩個角度來看:
- 不同的面試官自然會有各自不同的考察方式和側重點,說手寫代碼能夠證明面試者的能力,也無可厚非,最起碼這可以證明面試者的基礎是否紮實。相信不管是程序員在學JAVA WEB還是學其他任何語言的時候,都是從記事本寫Hellow World開始的,用鍵盤能夠在記事本上敲出來的代碼,難道用筆在紙上就寫不出來了,相信這不可能吧。感覺之所以產生這個問題,有一種情況是因為很多時候很多程序員都已經習慣了IDE環境下來寫代碼,這本沒錯,不管是用eclipse,vs還是其他什麼IDE,在智能提示的幫助下,可以很大程度的提升編碼效率,但是離開了IDE之後,很多人就不會寫代碼了;還有一種情況是,對於現在很多信息系統的開發,很多程序員都習慣了“天下文章一大抄”,尤其在開源的大趨勢下,很多功能只要願意,百度一下就“信手拈來”,而一旦沒有了網絡,功能的實現就成了空談。
- 從另一個角度來看,通過手寫算法,個人面試官在考察你是否具有紮實的基礎,同樣也在考察你解決問題的能力,在真正的工作中,難免會遇到各種各樣的問題,難道在那個時候,就直接告訴客戶我只是做JAVA WEB的而不會其他方面的東西,這顯然是不可能的。