程序员面试白皮书_AnUltimateGuideToCodingIntervie.epub - (EPUB全文下载)

文件大小:0.62 mb。
文件格式:epub 格式。
书籍内容:

程序员面试白皮书
 
An Ultimate Guide To Coding Interviews
前言
 
我的故事,你的故事
 
这是一本我希望我在大学就能看到的一本书。在我读大学的时候,跟很多同学一样也走过不少弯路:艰难地啃着计算机必修课,被里面的指针对象搞的晕头转向,对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等等公司起薪至少十多万
美金
,每年还会发年终奖金和价值数万美金的股票。更不要说加入最火的创业公司,三四年后一旦上市就可以提前退休,或者把工作作为兴趣。在国内,阿里巴巴上市也造就了成百上千个千万富翁,即使是上市前一两年刚加入的新人,也拿到了一百万人民币左右的股权。
 
如果说这些职位难度太高,对于你遥不可及,或者需要很长的准备时间,那也许对于上面的文字你只会一笑而过。但是,如果告诉你通过正确的方式,做好面试准备, ............

书籍插图:
书籍《程序员面试白皮书_AnUltimateGuideToCodingIntervie.epub》 - 插图1
书籍《程序员面试白皮书_AnUltimateGuideToCodingIntervie.epub》 - 插图2

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 程序员面试白皮书_AnUltimateGuideToCodingIntervie.epub - (EPUB全文下载)