1. 面试
大家无疑最关心的是如何拿到好offer,当然拿到好offer的前提是通过面试,所以我先主要介绍一下我所理解的IT面试。
按照我自己的分类观点,所有IT公司的面试,大致可以分为大神公司面试和普通公司面试。
大神公司典型例子是谷歌,facebook,微软等
普通公司可能包括阿里巴巴等
从面试角度来看,大神公司更看重一个人的基础能力-包括写code,算法,数学,逻辑等。他们更喜欢基础好,而且比较聪明的员工。
而普通公司会看重背景,所以面试问题会有一些基本数据结构和知识性比较强的考察,例如网络、数据库什么的。感觉普通公司更想招聘到一个过去就能干活的员工。
1.1 大神公司面试
以谷歌为例,阐述一下大神公司的面试。
谷歌很重视 coding能力的考察,本ds面了谷歌6轮(结果未知),每轮都至少有一道coding题目。
Coding题目就是给你一个不是很难的问题(基于字符串,链表,树等基础数据结构的问题),然后要求面试者在白纸或者电脑的TEXT文档上写出程序。
虽然题目描述通常很简单,不过很多时候会有巧妙解法,所以一般会先描述如何解题,然后给出程序,代码量通常不会超过50。
面试官通常考察是:正确性,对于边界条件特殊情况的处理,代码风格等。后面会给出一些推荐材料,很多是针对coding题目的。
如果能一气呵成,并且bug-free,那么恭喜你,这关就过了。
谷歌对算法的要求没有那么高,没有想得那么可怕,这么多轮面试中,算法性强的也就是问到动态规划,可能会写程序,不过大多数情况都是只描述算法。
当然也会有数据结构的设计题目,给你一个应用场景,要求设计一个可以满足要求的数据结构,并为之设计接口。
Facebook,微软,雅虎等公司都有这个风格,一般都是这些外企对这些能力比较看重。
(当然这些公司没有都面,很多是根据同学面试的结果总结的)
WAP
下面还想介绍一个在我浙有广泛关注的Works Applications,相信明年还会有很多人申请这家的。
如果你经常跟进十大,应该不会忘记WAP这个年薪40w的企业。
这家公司在我们眼里应该是比较奇葩的一朵了,所属行业是ERP,日企。
如果特别想做技术,搞很酷的大数据,高并发,这里绝对不适合你。因为他们的技术都是以满足企业要求为导向的,所以我们熟悉的互联网技术是基本没有。你要变成一个技术和业务都要懂的人,而非技术大牛。
因为比较奇葩,不能用大神公司的面试来归纳,所以还是细谈一下。这家公司招聘流程如下:
1. 网上提交程序
WAP在宣讲会后,会发一个小册子,里面有2个编程题目,3天之内实现提交。
虽然他要求要效率尽量高,但是经验告诉我,这个东西正确性才是最重要的,简单正确的程序,通过第一轮问题不大。
2. 面试
属于大神公司面试,现场coding。
你和面试官对面而坐,面试官从题库中抽一个给你,然后你现场写code,语言要求java
(不能用c++,所以要想进WAP就要懂java)
第一个题目通常是修改1中实现程序,为之加一个功能。
接下来的题目就是和谷歌类似的编程题目,能做几个就看速度了。
如果这一轮表现特别好,会直接发offer,我浙据说今年有四个在这一轮直接拿下的。
大多数表现还ok会发internship offer,去上海参加为期十天的实习。
3. Internship
这个实习会给你一个场景,让你开发商业软件,记得我的题目是:给连锁百货超市的老板(单店老板或者区域老板)开发一个软件。
整个开发环节分为写需求(catalog),实现,展示。
需求完全需要自己想,可以查资料这个没有问题。简单的展示和基本的管理属于下品;能利用数据找到某种关系为中品;能从实际问题出发,给出理想方法为上品。
个人理解catalog是重中之重,想出有趣并且存在的实际问题,并给出切合实际的解决方法是这个部分的取胜之处。
Catalog会有2次review,和面试官一一交流,然后回去修改。
然后就是实现了,功能可以不全做出来,实现之前最后先规划一下,利用点设计模式啥感觉程序才有亮点。
4. Offer
工作地点上海,终生雇佣(可以跳槽,不过公司不会解雇你)
问过hr说不学日语完全没有问题。但是感觉为了给天皇更好的搬砖,日语还是必要的。
感觉这个公司机会还是会有的,上海office才47人,每年招聘一些,前期加入的员工,在日企这样比较重视资历的地方,应该会有比较好的上升空间。
2. 准备
面试场景差不多一一介绍了,不过如何才能决胜呢?下面从个人角度说一下如何准备吧。
找工作的时候见证了这句话:如果你十分努力,一切都会显得好不费力。不过前提是努力的方向一定要正确,给出一些我自己认为应该正确的方向吧。
补充一句:如果你是ACMer,下面的部分可以跳过。
时间预算:应该提前2个月准备
关于code面试
首先推荐的一本书:<Crack code Interview>,还有一本差不多的中文书叫<剑指offer>
这两本书比较系统的介绍了IT公司的面试,并且有大量的题目是涉及IT面试和code面试的。
还有一个很好的网站,叫leetcode http://www.leetcode.com/onlinejudge
一共有100多个常见的编程考试题目。
《微软等面试一百题》,这个里面的题目和之前的材料会有冲突,作为参考。
做编程准备,切记眼高手低,一定要自己一个一个在记事本上敲,尽量不要用IDE和调试。虽然这一点自己也很难做到,不过感觉这个能力就是大神公司的要求。
《编程之美》这本书对于百度等知名企业还是很有用的,记得我当时电话面试百度,居然这里面出现了2个原题。
关于算法面试:
个人认为主要准备贪心,动态规划这个层次的题目。要能熟练掌握常见题型
准备方法可以根据poj题目分类,将贪心和动态规划入门题目都刷2遍
关于项目介绍:
可以用中文,英文介绍自己的项目,从问题到解决方案,可以娓娓道来。没事可以想想项目的难点,编程上的challenging等问题。这些问题确实太容易被问到了。
基础准备:
要对一门编程语言做到基本精通,例如c++,java。c++的高级内容,例如关于虚函数的实现,异常是很多公司面试时候经常问到的。
基础知识也是很多公司喜欢问的,操作系统,网络,数据库等有时间最好都回顾一下,当年自己的网易游戏面试就栽在网络和数据库上了,问了很多细节,有一种“楼主在讲什么的”的感觉。
气场
我所说的气场,主要来自于自信吧,这是一件长久的功夫,平时认真干活,多读读书,有机会就去好地方实习,有这些资本,会让你更加自信,而自信,是所有成功重要因素之一。