Pages

Saturday, 25 May 2013

找IT工作的一些经验和教训

lz上大学之前对cs知之甚少,基本印象和大多数人理解的修电脑差不多。开始略感吃力,还好我蓝鲸大学偏重基础,依靠数学等底子没被实验课噼里啪啦 敲完代码的大牛甩出几条街。这也告诉我们,开始落后不用太担心,亡羊补牢,犹未晚矣。再者要结合学科的特点,比如物理等基础学科要多做题,而像计算机就要 多动手写代码调bug。这里建议本科同学在适当提高绩点的同时,多参加些竞赛,比如ACM/ICPC和数学建模,到找工作的时候会发现受用无穷。我不知道 每天一把dota是否能成为大神,但每天切一道题(非水题)一定会成为”神”,事实上后者很难做到,其中一个原因是到后来你会发现已经没有不水的题 了:),推荐网站有usaco, poj和topcoder。lz没参加过正式比赛,只有poj200题程度的弱菜已经能应付国内绝大部分公司了,貌似现在系里开始重视,这点要跟交大学 学,他们有自己的OJ并且持续有作业发布。

假如在电脑面前的你已经虚度了本科,不要紧,还有研究生阶段可以把握,如果又像lz一样遇到好的导师能给学生自由发挥的空间,那找不到好工作就是你的不对了。但如果你连研究生都荒废了,好吧,最后我会传你”抱佛脚秘籍”。

从目前的情况来看,本科出国读硕的那帮人基本是活的最爽的,对于无心学术的同学来说,从个人成长来看这应该是best practise。对于像lz这样当年完全无出国意识,后知后觉的人来说还有个途径就是直接应聘国外公司。lz在4月份就试着面了两家dream company(G和FB)的暑期实习,在没有充分准备的情况下果然败北,产生的直接后果是FB一年内不能再面,G后来面full time考虑到之前的面试情况再次悲剧。所以面试什么的一定要做好充分准备并且考虑后果,不要心急。另一方面要练好口语,这样才不会出现遇到阿三互相听不 懂对方的情况…这两家的面试形式相似,国外的都差不多,一般每一面都是45分钟两道题,先是简单的self introduction,然后就开始编码,phone interview在类似google docs的在线文档上写代码,on site就在白纸上写,对正确性的要求较高,不但算法要最优,而且细节也逃不过面试官的法眼,全局构思好再下手,多处涂改会减少印象分。算法基本是dp, 搜索,贪心和hash,trie,heap等数据结构,不会有图论和计算几何。G家经历了4面,2道系统设计(cache和信息流)和6道算法题(dp, bfs, 二分),最后因为某一轮表现地不好还是挂了…当然除了这两家,还有一些startup会在www.interviewstreet.com上联合举行 codesprint,lz参加了一次,收到Rocketfuel和PocketGems两家小公司的talk invitation,无心恋战就没有面。其他像quora会在网站上公布challenges(http://www.quora.com /challenges),试着做了发给他们,收到回复说安排面试,但一直没有消息,貌似他们对学校比较看重(empolyee里很多 standford, mit)。说了这些,大家不要觉得很难,lz就认识同学拿到offer的,只是我太菜了…其他如amazon,evernote,hulu也非常好,有兴 趣的可以试试。

接着说下实习,如果能去dream company实习那最好不过了,因为会有内部转正的机会,概率会比校招大一些。如果不能,那看个人选择了,去startup辛苦点,更能学习技术,去大 公司相对轻松,能了解公司积淀的文化和知识,简历好看点,但通常接触不到核心。lz在微软上海实习了一段时间,面试跟上面那些外企差不多,不过能说中文舒 服多了:),外企朝9晚5的生活挺滋润。大多数公司还是看重实习的,比如在面阿里时就看见面试官在实习旁画了一个圈。当然这些的前提是你论文憋得差不多并 且像lz一样遇到开明的导师。也有人利用暑假这两个月练习写代码准备开学后的正式校招,如果你有毅力加上善于巩固总结,拿到G家的offer也很有可能。

校招一般从9月中旬开始,一般都是笔试,技术面,hr面的流程,个别企业先hr面。基础知识(网络,数据库,算法,OS)准备好很重要,但不可避免 的是很多公司的面试官会问他们工作领域相关的问题,比如美味书签问ios移动开发,阿里会偏分布式系统(hadoop)和数据库(sql, nosql),网易游戏问C++的原理,STL的知识,面试之前针对性地看些题目会大有裨益。美味书签lz是报着打怪升级的目的去的,最后拿到口头 offer最后也没去,每次面试都能收获很多,无论是知识点还是心理方面。这也告诉我们找工作的事要早早准备,不然等自己到巅峰状态,招聘都结束了。另外 面试官会看你是否真正喜欢自己将要从事的行业,问些vim,git等课本里没有的东西,更直接的是网易的hr面会问玩过哪些网易的游戏,由于lz已经被室 友洗脑,认为游戏是靠浪费别人时间挣钱的行业,于是过了技术面就开始各种胡诌,最后也就没下文了。不过感觉网易游戏的题目难度比较大,对概率和算法的要求 高。至于百度阿里,跟网上说的差不多,好玩的是阿里面到后面可能会让你当场玩一个puzzle游戏。腾讯今年招的少,基本没听说几个拿到offer。

除笔试外,谷歌4-5轮技术,阿里2轮技术(后一轮包含hr),百度2轮技术+1轮hr,网易3轮技术+1轮hr。没有群面,基本都是1对1。

lz亲身经历基本如上所述,下面推荐点资源,供平时积累和临时抱佛脚用
http://ruby-china.org/, ruby论坛,喜欢ruby的简洁
www.36kr.com 很多有意思的想法

matrix67.com/blog, http://exp618.com,http://www.52nlp.cn 数学,算法理论
http://blog.jobbole.com 技术泛读
http://rdc.taobao.com/blog/cs/, http://stblog.baidu-tech.com/ 企业技术博客,实际问题


下面是面试题,实践觉得,现场想出来 < 看过+假装思考
http://blog.csdn.net/v_july_v
http://zhedahht.blog.163.com/
http://blog.csdn.net/fp_hzq/article
http://blog.acmicpc.info/
http://careercup.com/ 外企真题


OJ,其中leetcode题量难度适中,lz做完收获很大,交大的OJ也适合做
http://www.nocow.cn/index.php/USACO_Training
http://www.leetcode.com/onlinejudge
http://acm.sjtu.edu.cn/OnlineJudge
www.interviewstreet.com/challenges/ 题目质量高


书推荐三本 《算法导论》,《GOF设计模式》,《Linux内核源代码分析》是目前读的觉得最好的书,但还没理解透彻.