PS:此文章为转载,源地址:http://www.newsmth.net/nForum/#!article/CoderInterview/849     作者应该是在美国进行的笔试面试,感觉面试的的公司也很NB,其准备过程很值得借鉴

原文如下:

  其实早在8月份我刚来美国的时候我们就开始准备这个事情了。那个时候我通过她的朋友认识了一个在G公司工作的师兄,并且打电话聊了一下。 
  
  事实证明这个电话对于我后来找工作的过程有着至关重要的影响。师兄推荐了四本书给我:CLRS,Programming Pearls, Programming Interviews Exposed 和 Career Cup 150. 
  
  其实其中的三本我都看过,Programming Pearls也恰好是我为数不多的带到美国的技术书籍之一。八月份的时候我正在雄心勃勃打算读完Concrete Math的后半本,当时听师兄这么一说,正好给自己一个偷懒的借口,重新读读PP,编程序总比学数学容易,是吧。。 
  
  当时我正在思考的一个问题其实是如何把代码写得干净整洁。之前其实我在各种网站上做题也不少,但是给出的答案往往都是一坨sh*t一般的代码,面试中也很难在短时间内写出正确的、易读的东西——呃,直到几个月前我还是这个水平,是不是太逊了。。= = 
  
  当时重新读编程珠玑的时候,我突然从那个简单的二分查找的例子里面明白了维持不变量在写算法里面的意义。然后我用这个原则试着写了一下二分、堆排、快排、mergesort和kmp,然后就猛然发现牛逼了。。。 
  
  关于边界检查,我以前经常要么就是做得过少,要么就是做得过多,建议对于边界检查没有太多概念的童鞋参考一下glibc的strlen, strcpy, memcpy等函数,知道什么样的结果是适度的。 
  
  后来到了Pittsburgh之后,俺花了好几十大洋,是真的大洋,买了一本纸板的CLRS,美国的书还是挺贵的,以后谁要来最好还是想办法多带点吧,或者海运一些。。于是在准备简历之余我就开始第四遍或者是第五遍读这本厚书。 
  
  期间简历我准备得很差,估计这也是为什么amazon甚至没给我校园面试,在后来很久以后才从简历堆里把我翻出来。这个谁有经验的可以说一下。。 
  
  复习算法确实是很必要的一个工作。主要是因为很多不常用的算法会被我忘的一干二净。比如dfs找连通区域。全图最短路径。网络流。。然后我很英明地去看了看以前不是很熟悉的那些数据结构,比如Trie,比如Suffix Tree,比如Treap,Splay Tree等等。Trie值得好好看一下,因为大家经常考字符串处理,图算法也得多了解,因为重现率非常高。至于算法导论前几章的排序和查找。。那是基础。。必须得能倒着背出来(恩。。我不能。) 
  
  算法里面最容易在面试中重现的。。我感觉就是hash了。。恩,大家离开hash貌似都活不了的样子。。所以关于hash的各种特性和应用场景也要仔细研究一下。 
  
  复习完CLRS之后的一个多月里,事实证明我基本是在做无用功,我把cs:app重读了一遍,可是面试里面基本没人鸟这块的知识,当然关于page fault啊,stack啊heap啊这些玩意的基本概念是要有的,问起来不要露怯就好了。 
  
  这段时间里面我基本在topcoder上做练习题。250分的题目基本是1+1=2型,但是正因为简单所以可以练习如何把算法写得简洁正确。500分的题目有简单的又很难的,但是大体还是可以用的。这类题目的难度和面试基本很相近了。如果能在30分钟内完成的话,面试的时候至少速度不成问题。 
  
  后来就是cmu的校园招聘大会,一坨公司跑到学校里面练摊,一群学生穿上正装去投简历。。说实话作为一个码农我真不理解为啥要穿正装。。 
  
  投过简历之后我收到了m$和ff的面试通知,不过这都当后话了。 
  
  后面除了坚持在topcoder上练习,我还读了另外两本书,programming interview exposed和career cup 150。前者其实很扯淡,随便翻翻就好了,后面那本是真的应试宝典,虽然撞上的题目基本没有。。我面了这一坨,一共也就三道题撞上了,但是对于热身和适应难度绝对是极品,建议要面试的童鞋都翻翻。其中一些问题的解法都很tricky,对于将来现场能解决一些tricky的问题很有启发意义。 
  
  再之后我从topcoder转战了spoj,因为我比较喜欢那边的题目普遍输入输出都很简洁。。有兴趣的也可以去做两道试试。http://spoj.pl

IT求职中,笔试、面试的算法准备的更多相关文章

  1. leetcode 刷500道题,笔试/面试稳过吗?谈一谈这些年来算法的学习

    想要学习算法.应付笔试或者应付面试手撕算法题,相信大部分人都会去刷 Leetcode,有读者问?如果我在 leetcode 坚持刷它个 500 道题,以后笔试/面试稳吗? 这里我说下我的个人看法,我认 ...

  2. 从头说catalan数及笔试面试里那些相关的问题 (转)

    作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11938973. 声明:版权所有,转载请注明出处,谢谢 ...

  3. catalan数及笔试面试里那些相关的问题(转)

    一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项 ...

  4. php 笔试面试 总结

    一次小小的笔试面试经历,虽然是一些简单的问题,但是自己在这儿总结一下,也查一些资料,得出一些较好的答案,也能帮助自己成长. 1.自己熟悉的http状态码及其意义 其实这个题答案随处可见.这儿也还是记录 ...

  5. 找工作笔试面试那些事儿(16)---linux相关知识点(1)

    linux这部分的知识倒不是笔试面试必考的内容,不过现在很多公司开发环境都在linux系统下,一些简单的知识还是需要了解一下的,笔试面试中万一碰到了,也不会措手不及.作为菜硕的我,又因为读研期间的项目 ...

  6. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  7. 找工作笔试面试那些事儿(13)---操作系统常考知识点总结 ZZ 【操作系统】

    http://blog.csdn.net/han_xiaoyang/article/details/11285485 上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样, ...

  8. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  9. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

随机推荐

  1. [转]opencv3.0 鱼眼相机标定

    [原文转自]:http://blog.csdn.net/qq_15947787/article/details/51441031 前两天发表的时候没注意,代码出了点错误,所以修改了一下,重新发上来.  ...

  2. js中arguments的用法

    了解这个对象之前先来认识一下javascript的一些功能: 其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载.Javascrip中国每个函数都会有一个Argume ...

  3. 阿里云CentOS6.5搭建服务器JDK+tomcat+MySQL

    阿里云ECS,计划安装jdk:MySQL:tomcat: 一.yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的S ...

  4. WebForm Repeater Response以及 地址栏

    Repeater重复器: Repeater中有五个模板,这里需要注意的是4个 <HeaderTemplate> - 开头,只执行一次的内容 <ItemTemplate> - 需 ...

  5. inline-boock的默认间距

    1 2 3 4 div{width:900px;} div li{ display:inline-block; width:300px;} <ul>     <li></ ...

  6. Filter

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 web资源:例如Jsp, Servlet, 静 ...

  7. FUNCTION

    1,FUNCTION-1 CREATE FUNCTION `vendor_area_child_ids`(rootId INT) ) BEGIN ); ); SET pTemp = '$'; SET ...

  8. Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)

    仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...

  9. 调度系统任务创建---创建一个JoinTrigger的依赖任务(五)

    有时候我们需要创建一个任务,这个任务有多个下游任务,在所有下游任务执行成功后再触发一个join操作. 这种场景可以使用JoinTrigger的触发器来实现. 该场景对应的拓扑结构如下: 该触发器的详细 ...

  10. a 锚点跳转滑动效果

    点击a链接时,跳转到相应id的位置处,有一个滑动效果. <a href="#my">我是跳转到div</a><div id="my" ...