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. HTML初步入门

    标签元素 标签介绍 html元素包括一个或一对标签定义的包含范围.而标签就是由两个字符串"<"和">"号组成,标签包括开始标签"<& ...

  2. 【转】Android Https服务器端和客户端简单实例

    转载地址:http://blog.csdn.net/gf771115/article/details/7827233 AndroidHttps服务器端和客户端简单实例 工具介绍 Eclipse3.7 ...

  3. 学习Git的总结与体会

    学习Git的总结 blog 第一次学习Git是完全按照廖雪峰老师的教程学习的,学的过程中基本上没有遇到什么问题,但是自己实际操作就问题不断了. 首先,还是按照惯例,来膜拜一下廖雪峰老师精简的教程知识吧 ...

  4. VC++ 回调函数及使用方法(转)

    转载:http://blog.csdn.net/vsooda/article/details/7435801 转载:http://blog.csdn.net/lincyang/article/deta ...

  5. PHP获取微信 accesstoken

    PHP根据appid和secret获取微信access_token,php通过curl远程获取微信access_token信息微信公众号开启开发者模式,使用appid和secret请求微信获取acce ...

  6. PHP基础结业感想与总结!

    之前来传智是我认真调查和思考后得出的结论,我做程序员的第一目标是赚钱和学习技术,有一句话"艺多不压身".相信班上所有人的目标都是,这一点都不会庸俗,但是各个人的目的就未必一样了.我 ...

  7. 存储过程里面使用in变量列表异常的处理

    在写一个存储过程的时候,由于需要用到类似:select id,name from tablename where id in(id1,id2,id3...)的查询语句,同时括号里面的变量是拼接得到的, ...

  8. 如何在IamgeButton上面添加文字

    如何在IamgeButton上面添加文字? 首先要知道,IamgeButton是不可以直接添加文字的.所以我们需要间接制作一个Button按钮 我的代码将会展示另外一个例子,与本文中的代码相似. 本文 ...

  9. Ubuntu 12.04 Virtualbox 启用USB 设备支持

    转载自:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 具体步骤在上面的链接中 今天在ubuntu下安装了Virtualb ...

  10. git中常用命令小结

    提交过程 查看文件改动以及新增的文件 git status 添加新增文件 git add your_file_path // 添加全部文件 git add * // 添加某类型文件 提交文件 git ...