程序员面试白皮书_AnUltimateGuideToCodingIntervie.epub
- 资料大王PDF
-
0 次阅读
-
0 次下载
-
2024-04-11 20:32:46
微信
赏
支付宝
文档简介:
程序员面试白皮书
An Ultimate Guide To Coding Interviews
前言
我的故事,你的故事
这是一本我希望我在大学就能看到的一本书。在我读大学的时候,跟很
多同学一样也走过不少弯路:艰难地啃着计算机必修课,被里面的指针
对象搞的晕头转向,对i++和++i区别死活不理解,对操作系统的调度策
略而抓狂,很难对专业书产生兴趣,只是想着去应付考试和学分。当我
们毕业后,哪怕有了计算机学位和实际工作经历,但其实还是不知道最
想得到什么。我当时心中有个情节,就是希望能去最好的公司,比如
Google,因为听说那边都是最聪明的人,有着最好的待遇和福利做着
最有影响力的事情,当我鼓起勇气去尝试的时候,我失败了,并且要进
入6个月的冷藏期(失去在一段时期内继续面试的机会)。而我发现当时
的面试表现是那么的稚嫩和糟糕,我开始懊恼,开始反省,开始重新准
备,这样才有了我下一个面试机会和其他的Offer,当然如果一切可以
重新再来,我可以更有自信更好地发挥我的能力,也许当时的理想公司
就会给我Offer。
有些朋友会认为只要能混过面试,拿到工作之后有的是时间可以继续学
习。这话听起来有道理,但我在这里给出一个反例:我记得多年前第一
份实习的任务是对某个大型应用程序进行性能测试 。我不知道如何创
建一个用户界面,然后随意定义文本字段、菜单和按钮。我不知道如何
用线程来思考,我错误调用整个缓存和线程池。我也不知道如何去做代
码维护,并没有单元测试,和编写基本的文档,最后我还是写了几千行
的Java代码,这是个无法维护的巨大的类。而如果我在工作之前多一些
积累和看一些代码,或许不会那么尴尬。
也有些同学说面试中只会考没有用的算法,这跟工作没有任何直接关
系。我同意工作中大多数情况是不会用到复杂的算法,但如果你没有过
硬的基本功,在面对一些新情况的时候,你就很难举一反三,灵活运用
了。我记得我在第一家公司第一个项目是在一个新城市中增加新的排序
选项来选择上市的所有租房。这是一个紧急任务,上司希望我尽快熟悉
代码库,我当时也顶着压力,做到了一周上线。不久后,我就在我们总
裁面前演示:我看着他点击了某个区的房源,选择了新的排序选项,结
果花了几分钟去加载页面。我之前也验证过应该没问题,平常只需要几
秒钟的时间。我当时满头大汗,真是搞砸了。那天晚上,我思考了很久
才想通。我看中的新代码做两个数据库调用需要遍历其中的每一个,它
需要的N * log N比较的次数,而对于那个区域,其中大约有N =1000个
房源,那么大约要2万次数据库调用才能完成一个页面加载。当然,知
道了原因,优化起来就简单了,通过调用缓冲,把数据切成更小块......
评论
发表评论