- 程序員面試金典(第6版)
- (美)蓋爾·拉克曼·麥克道爾
- 1633字
- 2020-01-10 15:33:47
前言
招聘中的問題
討論完招聘事宜,我們又一次沮喪地走出會議室。那天,我們重新審查了10位“過關”的求職者,但是全都不堪錄用。我們很納悶,是自己太過苛刻了嗎?
我尤為失望,因為由我推薦的一名求職者也被拒了。他是我以前的學生,以高達3.73的GPA畢業(yè)于華盛頓大學,這可是世界上最棒的計算機專業(yè)院校之一。此外,他還完成了大量的開源項目工作。他精力充沛、富于創(chuàng)新、頭腦敏銳、踏實能干。無論從哪方面來看,他都堪稱真正的極客。
但是,我不得不同意其他招聘人員的看法:他還是不夠格。就算我的強力推薦可以讓他僥幸過關,但他在后續(xù)的招聘環(huán)節(jié)可能還是會失利,因為他的硬傷太多了。
他盡管十分聰明,但答起題來總是磕磕巴巴的。大多數(shù)成功的求職者都能輕松搞定第一道題(這一題廣為人知,我們只是略作調整而已),可他卻沒能想出合適的算法。雖然他后來給出了一種解法,但沒有提出針對其他情形進行優(yōu)化的解法。最后,開始寫代碼時,他草草地采用了最初的思路,可這個解法漏洞百出,最終還是沒能搞定。他算不上表現(xiàn)最差的求職者,但與我們的“錄用底線”相去甚遠,結果只能鎩羽而歸。
幾個星期后,他給我打電話,詢問面試結果。我很糾結,不知該怎么跟他說。他需要變得更聰明些嗎?不,他其實智力超群。做個更好的程序員?不,他的編程技能和我見過的一些最出色的程序員不相上下。
與許多積極上進的求職者一樣,他準備得非常充分。他研讀過Brian W. Kernighan和Dennis M. Ritchie合著的《C程序設計語言》,也學習過麻省理工學院出版的《算法導論》等經(jīng)典著作。他可以細數(shù)很多平衡樹的方法,也能用C語言寫出各種花哨的程序。
我不得不遺憾地告訴他:光是看這些書還遠遠不夠。這些經(jīng)典學院派著作能夠教會你錯綜復雜的研究理論,幫助你成為出類拔萃的軟件工程師,但是對程序員的面試助益不多。為什么呢?容我稍稍提醒你一下:即使從學生時代起,你的面試官其實都沒怎么接觸過所謂的紅黑樹算法。
要順利通過面試,就得“真槍實彈”地做準備。你必須演練真正的面試題,并掌握它們的解題模式。你必須學會開發(fā)新的算法,而不是死記硬背見過的題目。
本書就是我根據(jù)自己在頂尖公司積累的第一手面試經(jīng)驗和隨后在輔導求職者面試過程中提煉而成的精華。我曾經(jīng)與數(shù)百名求職者有過“交鋒”,本書可以說是我面試過幾百位求職者后的結晶。同時,我還從成千上萬求職者與面試官提供的問題中精挑細選了一部分。這些面試題出自許多知名的高科技公司。可以說,本書囊括了189道世界上最好的程序員面試題,它們都是從數(shù)以千計的好問題中挑選出來的。
我的寫作方法
本書重點關注算法、編程和設計問題。為什么呢?盡管面試中也會有行為面試題,但是答案會隨個人的經(jīng)歷而千變萬化。同樣,盡管許多公司也會考問細節(jié)(例如,“什么是虛函數(shù)”),但通過演練這些問題而取得的經(jīng)驗非常有限,更多的是涉及非常具體的知識點。本書只會述及其中一些問題,以便你了解它們“長”什么樣。當然,對于那些可以拓展技術技能的問題,我會給出更詳細的解釋。
我的教學熱情
我特別熱愛教學。我喜歡幫助人們理解新概念,并提供一些學習工具,從而充分激發(fā)他們的學習熱情。
我第一次正式的教學經(jīng)歷是在美國賓夕法尼亞大學就讀期間,那時我才讀大二,同時擔任本科計算機科學課程的助教。我后來還在其他一些課程中擔任過助教,并最終在賓夕法尼亞大學推出了自己的計算機科學課程。該課程專注于教授一些實際的“動手”技能。
在谷歌擔任工程師時,培訓和指導新的工程師是我最喜歡的工作之一。后來,我還利用“20%時間”在華盛頓大學教授兩門計算機科學課程。
多年之后,我仍然繼續(xù)在教授計算機科學的相關課程,但是這次我的目標是幫助創(chuàng)業(yè)公司的工程師準備收購面試。我看到他們犯了不少錯誤,經(jīng)歷了很多困難,而我正好擁有幫助他們解決這些問題的技巧和策略。
《程序員面試金典》《產(chǎn)品經(jīng)理面試寶典》《金領簡歷:敲開蘋果、微軟、谷歌的大門》和CareerCup都能充分體現(xiàn)我的教學熱情。即便是現(xiàn)在,你也會發(fā)現(xiàn)我經(jīng)常出現(xiàn)在CareerCup.com上為用戶答疑解惑。
請加入我們的行列吧!
電子書
掃描如下二維碼,即可購買本書電子版。

- Cocos2d Cross-Platform Game Development Cookbook(Second Edition)
- Beginning C++ Game Programming
- 華為HMS生態(tài)與應用開發(fā)實戰(zhàn)
- Mastering PHP Design Patterns
- Rust Cookbook
- Building Mobile Applications Using Kendo UI Mobile and ASP.NET Web API
- C語言程序設計
- Python編程從0到1(視頻教學版)
- Creating Data Stories with Tableau Public
- Arduino Wearable Projects
- LabVIEW數(shù)據(jù)采集
- 微前端設計與實現(xiàn)
- Elasticsearch Blueprints
- C語言程序設計教程
- SQL Server 2014 Development Essentials