百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

程序员面试白皮书

haoteby 2025-03-01 14:01 26 浏览

我的故事,你的故事:

这是一本我希望我在大学就能看到的一本书。在我读大学的时候,跟很多同学一样也走过不少弯路:艰难地啃着计算机必修课,被里面的指针对象搞的晕头转向,对i++, ++i区别死活不理解,对操作系统的调度策略而抓狂,很难对专业书产生兴趣,只是想着去应付考试和学分。当我们毕业后,哪怕有了计算机学位和实际工作经历,但其实还是不知道最想得到什么。我当时心中有个情节,就是希望能去最好的公司,比如Google,因为那边听说都是最聪明的人,有着最好的待遇和福利做着最有影响力的事情,当我鼓起勇气去尝试的时候,我发现我失败了,并且要进入6个月的冷藏期(失去在一段时期内继续面试的机会),而我发现当时的面试表现是那么的稚嫩和糟糕,我开始懊恼,开始反省,开始重新准备,这样才有了我下一个面试机会和其他的Offer,当然如果一切可以重新再来,我可以更有自信更好地发挥我的能力,也许当时的理想公司就会给我Offer。

有些朋友会认为只要能混过面试,拿到工作之后有的是时间可以继续学习。这话听起来有道理,但我给个教训:我记得多年前第一份实习的任务是对某个大型应用程序进行性能测试 。我不知道如何创建一个用户界面,然后随意定义文本字段,菜单和按钮。我不知道如何用线程来思考,我错误调用整个缓存和线程池。我也不知道如何去做代码维护,并没有单元测试,和编写基本的文档,最后我还是写了几千行的Java代码,这是个无法维护的巨大的类。而这些如果我在工作之前多一些积累和看一些代码,或许不会那么尴尬。

也有些同学说面试中只会考没有用的算法,这跟工作没有任何直接关系。我同意工作中大多数情况是不会用到复杂的算法,但如果你没有过硬的基本功,在面对一些新情况,你就很难举一反三,灵活运用了。我记得我在第一家公司第一个项目是在一个新城市中增加新的排序选项来选择上市的所有租房。这是一个紧急任务,上司希望我尽快熟悉代码库,我当时也顶着压力,做到了一周上线。不久后,我就在我们总裁面前演示:我看着他点击了某个区的房源,选择了新的排序选项,结果花了几分钟去加载页面。我之前也验证过应该没问题,平常应该是几秒才对,我当时满头大汗,真是搞砸了。那天晚上,我思考了很久也想通了。我看中的新代码做两个数据库调用需要遍历其中的每一个,它需要的N * log N比较的次数,而对于那个区域,其中有大约N =1000个房源,那么大约要2万次数据库调用才能完成一个页面加载。当然知道了原因怎么优化就简单了,通过调用缓冲,把数据切成更小块,做数据量的控制,最后性能提高了100倍,所以说系统优化是离不开算法和扎实计算机基本功的。

其实每个工程师都讨厌BUG,代码不整洁,性能太差,用户界面不人性,这些都是一些技术细节,是可以慢慢体会和提高,总会能找到答案去改进的。但在工作中,我应该学习和使用什么样的技术?为什么要自动化测试?如何搭建一个产品,看起来比较靠谱?我怎么去选择一份工作?如果我在一家大公司工作,如何跳槽到创业公司?我如何谈判取得更多的薪金或奖金?什么是股票激励?这些问题倒是更棘手,我也会在第0章给出一些介绍和辅助工具补充。

回看我走过的一路艰辛,我尝试反思学到了什么,我发现其中大部分经验都是来自于痛苦的反复试验的结果。当我意识到成千上万的面试者或者IT开发人员正在经历同样的试错,犯同样的错误, 我觉得应该做一些更有意义的事情:这本书就是一个工具。诚然有些教训只能从在自己的错误中学习,但我希望为你能够从别人的经验中获得通向成功的捷径。

现状:

俗话说凡事要“顺势而为”,找工作亦是如此。现如今,借助手机网络带宽的快速提升以及移动互联网的概念,原先在PC平台才能开展的服务一下被冠上了“移动”二字。在手机上使用服务和电脑上使用服务本质上并没有太大区别,但关键在于手机更具有“私密性”和“便携性”,大大增加了客户粘性和使用时间,进而会对服务提供商产生更大的依赖性。在中国,互联网公司中百度,腾讯,阿里巴巴三驾马车分别把持搜索,社交游戏和电商平台三大主战场,互相竞争。而硅谷更是百花齐放:Apple,Google, Microsoft致力于打造自己的生态圈,完成硬件,软件,服务的闭环;而Facebook,Twitter,LinkedIn等为代表的社交平台也迅速通过巨大的用户群体完成“圈地运动”,将管辖区域内的用户导向各个实体商户;更有Uber,Airbnb等新兴公司,致力于通过移动互联网思维改变人们的实际生活。相比于2000年左右的互联网泡沫,这次的计算机高潮来势更为凶猛:不单单提供资讯,门户,电邮等虚拟线上服务,而是直接破坏性地侵入传统行业,以更高的效率改变原有行业。这就是为什么许多新兴科技企业号称是技术公司,但实际上提供着传统行业的服务。当前的趋势也会逼迫着传统公司作出改变,引入更多计算机人才,利用云计算,机器学习等新手段与新兴公司竞争。最简单的例子比如Wal-Mart Labs,以一个科技智囊的角色隶属于Wal-Mart,通过计算机技术分析,优化Wal-Mart的营运效率。更有金融,银行,地产,石油,制造,电子硬件等各个行业引入计算机技术,大大创造了从业人员的工作机会。

这样的趋势对你我有什么影响?人才需求的极速扩张意味着找工作难度降低,并且待遇也是水涨船高。举例来说,在美国,硕士毕业加入Apple,Google,Facebook等等公司起薪至少十多万美金,每年有年终奖金和数万美金的股票。更不要说加入最火的创业公司,三四年后一旦上市就可以提前退休,或者把工作作为兴趣。在国内,阿里巴巴上市也造就了成百上千个千万富翁,即使是上市前一两年刚加入的新人,也拿到了一百万人民币左右的股权。

如果说这些职位难度太高,对于你遥不可及,或者需要很长的准备时间,那也许对于上面的文字你只会一笑而过。但是,如果告诉你通过正确的方式准备,上面所说的职位触手可及,是不是听起来更有吸引力了呢?事实就是,由于软件工程师的职业特性,面试要求及局限性,以及市场需求等因素,程序员求职是一种比较具有应试性,相对容易找到门道的简单职业道路。网上不乏相关或不那么相关专业的毕业生通过半年到一年的努力拿到理想的计算机相关工作,由此可见,挑战不在于“能”和“不能”,而是如何通过正确的方法,迅速地进入潮流分一杯羹。

目的:

本书存在的目的并不在于代替课本教材,系统性地讲授计算机技术,而是作为一本工具书,创建一个实际的、可操作的面试方法论教程,提供一条快速熟悉技术面试题目的捷径,并且针对不同类型的题目,归纳总结解题方法。

程序员面试是对于面试者计算机知识的全面检测,因此,关于计算机诸如网络,操作系统,编译器,算法,数据结构等等各个领域的系统性学习不可或缺。但是考虑到面试的局限性,诸如时间限制,面试官对于面试者的熟悉程度等等,在白板(或者白纸)上写程序解决一些算法问题成为面试官较为青睐的方法之一。由于该面试方法比较机械,相对容易准备,也最适合总结一些方法论,所以本书的目的就在于传授白板写代码的准备技巧,帮助大家通过面试。我们将会遇到的题目、技术都是来自于我们实际面试过的一些炙手可热的硅谷公司和我们自己作为面试官的一些心得及宝贵经验。正如参加GRE考试一样,关于考试技巧的书籍并不能让一个完全不懂英语的人通过考试,但是可以使得英语基础合格的人如虎添翼,大大增加通过考试的几率。这就是本书的全部存在意义。

特色:

其实市面关于程序员面试的参考书也不少,但是我们认为这些书的关键问题在于它们大多是教你“怎么做”,但很少涉及“为什么这么做”。于是乎,读者往往会觉得书中的解法十分精妙,但是在面试的时候完全想不起来用哪种方法解决问题。其本质原因在于,这些参考书代替你做了最关键的一步:判断用什么方法解决当前的问题。本书遵从大多数面试参考书的构成方式,结合实例按照常见的数据结构,算法以及计算机基础知识进行章节划分,但是,本书着眼于如何进行“模式识别”,通过分析为什么这个问题被划分到这个章节,来教大家如何判断实际面试问题的类型,并且顺水推舟地得出解决问题的方法。对于每个章节,“The Rules”介绍章节涉及的相关知识点,回顾通常出现在教材中的重点内容;“模式识别”给出一些实例,帮助大家总结解决相关问题的常见方法,并且通过分析问题中的关键信息,教授大家如何从题目中得到关于题型分类以及解题方法的蜘丝马迹;最后,“工具箱”给出该章节涉及的C++/JAVA类,它们的常见函数及使用方法,还提供一些标准库函数,以及相关参考资料或扩展阅读。

相关推荐

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

A320-V2500发动机系统FADEC介绍(2)

目的全权数字发动机控制(FADEC)系统在所有飞行和运行阶段提供全范围发动机控制。...

三国志战棋版:玩家“二叔”用这套群DOT在比武中拿下31胜5负

声明:本文首发于今日头条,而后发布于“鼎叔闯三棋”的微信公众号、抖音、哔哩哔哩和小红书平台,如果在其他平台就是抄袭。...

真正的独一无二:Dot One 推出 DNA 定制系列 139英镑起

相信很多人在挑选衣物时有着这样的困扰,综合了性价比、面料等因素后好不容易找到了心仪的款式,还要担心是否会撞衫,不管是擦肩而过的陌生人还是身边的熟人,都令人尴尬。小部分人为此热衷于购买少量的古着或者限量...

崩铁:周年庆福利再升级,老角色加强时间确定,3.xdot体系反转

#埃安UT大一圈高级很多#...

Dotgo推出RBMHub,扩大了CPaaS提供商的覆盖范围和功能

据telecompaper网7月15日报道,用于商业消息传递的RichCommunicationServices(RCS)解决方案的领先提供商Dotgo宣布推出RBMHub。RBMHub的推出扩大了C...

深度解析:快照取消Dot职业的将何去何从

写在前面曾几何时,术士的出现便被冠以dot大师的名头,从远古时期的献祭腐蚀虹吸不如暗牧一个痛,到TBC上满dot=荣誉击杀+1,到wlk接近全暴击的冰晶腐蚀,再到CTM就算了吧MOP的各种变态吸x放...

星穹铁道:抽卡芙卡之前,你必须了解什么是dot!

卡妈终于上线了,可还是有很多人不明白什么是dot伤害,抽了卡妈直接玩起了直伤流,把一个持续伤害的引爆器玩成了打手,卡妈打dot伤害是远高于直伤的,有了卡妈的玩家一直了解dot,不然这卡妈就真被玩成四不...

游戏界的闪耀星辰陨落:悼念知名游戏博主″dotα牛娃″

无尽哀思!在数字时代浪潮中,游戏不仅是消遣娱乐的代名词,更是连接心灵的桥梁,构筑了无数人的青春回忆。在这片浩瀚无垠的游戏宇宙中,有这样一位博主,他以独特的风采、深邃的洞察力和无尽的热情,成为了玩家心中...

直击2017新加坡同性恋聚会Pink Dot,自由爱!

今年的“粉红点”又来啦~这个支持LGBT群体(男女同志、双性恋、跨性别等)群体的活动,从2009年起,已经在新加坡举办8年了!”这个非营利的同性恋权益活动,主要是希望大家了解到,不管一个人的性倾向或...

python-dotenv,一款超级实用处理环境变量python库

python-dotenv,一款超级实用处理环境变量python库python-dotenv概述:...

亚马逊语音助手毫无征兆发笑 诡异至极吓坏用户

来源:新华网美国电商亚马逊7日承诺,将更改名下“亚历克萨”语音系统设置,令它不会莫名发笑,免得吓坏用户。“亚历克萨”是亚马逊开发的语音助手软件,可服从用户语音指令完成对话、播放音乐等任务。依照原来设计...

2022最火英文网名男女生

精选好听英文昵称带翻译1.moveon(离开)2.Monster(怪物)3.Solo吉他手4.Finish.(散场)...

智能家具 RecycleDot 的出现给传统家具厂商带来新的挑战

从可穿戴手环、手表到智能衣服,智能硬件逐步渗透到每一个领域。最近有一对父子MikeSandru和JohnSandru在自家的车库中设计了一款智能家具RecycleDot,给日渐萧条的家具行...

欧洲通信卫星公司 OneWeb 敦促印度DoT尽早批准提供卫星宽带服务

据telecomtalk2月17日报道,欧洲通信卫星公司EutelsatOneWeb近日敦促印度电信部(DoT)尽快批准其在印度部署双地球站网关的计划,以便连接其近地轨道(LEO)全球卫星星座,并...