其实自己的求职之路是从寒假就开始了,漫漫长路,从开始准备,到拿到offer,差不多有四个月吧!不算艰辛,不算轻松,写下这点东西,一方面是对自己的总结,另一方面是希望能帮助需要的人!
首先,真的要声明,小本小渣,没有任何的谦(zhuang)虚(b i),看完保证你自信心爆棚,真的!!!之前寒假面了几个大公司,都挂在二面,包括阿里!所以,真的很渣!!!
【方向】
好了,言归正传,继续求职之路。首先,最最重要的是,一定要知道自己想干什么,想朝哪个方向,互联网行业的方向我知道的有
PHP, Java(安卓,JavaEE),C++,C# (.NET),Python,IOS,Web前端等
确定了哪个方向,才能为之努力,否则做的永远是无用功。知识结构永远是金字塔型的,至少大部分人是这样的!( PS:什么都想要的人请略过这篇文章,大牛也忽略这篇文章吧!)
【简历】
确定了方向后,就可以开始做简历了。做简历的建议,自己设计的好,就尽量自己做,感觉自己做的不好,就去网上下个模板,但是最好别一模一样,肯定要改,万一运气不好,有很多人跟你一样就完了。我是网上下载了一个,然后改的“面目全非”(没办法啊,艺术细菌几乎为0),最后变成自己的!简历上没有太好的经验,大家去看看大牛是怎么做的。我的简历是从简,项目说的详细一点,大致包括:求职意向,个人信息,联系方式,博客,github,优秀课程,学习成绩(写前3%就可以了),项目经验,获得奖项证书,意向城市(我个人建议要,因为很多公司有分公司,在不同地方),自我评价(可写可不写)。简历这关一定要过,不然后面都是空的。简历文件(pdf或者word格式文件)标题命名为:求职意向+姓名+手机号+入职时间(可写可不写).pdf。建议都用pdf吧,不会有乱七八糟的格式问题。
【基础篇】
因为自己本科是计算机科学与技术专业,所以这里只说计算机的。基础一般就是指笔试要考的,一面技术面问的。一言以蔽之,最重要的四门课:数据结构和算法,操作系统,计算机网络,数据库。笔试考的都是基础,最最基础的东西,只要你认真看书,没有不过的道理。**360,网易,阿里等大部分的大公司笔试题我都是秒杀。
**
针对笔试题和一面建议:
1.刷一遍《剑指offer》,在我博客里有刷题记录和代码需要的可以去参考,题目不多,50个小算法题,但都是经典;(一本剑指offer能秒杀国内大部分的互联网公司,如果要去硅谷那些公司,最好刷一下leetcode,剑指offer是不够的,我以前去做谷歌的题,三题一题都不会做啊!根本没有思路!!!)
2.Java推荐看《Java编程思想》,C++推荐《深度搜索C++对象模型》《C++ primer》《STL 源码剖析》;
3.重点放在基本的语法机制,包括多态,继承,多线程,网络编程,IO,基本的输入输出等;
4.过一遍上面介绍的本科教材,推荐看考研对应的教辅书,薄而且归纳的非常好
5.算法方面,不会太难,排序,线性表,二叉树,B树B+树,红黑树,KMP,递归,迭代,动态规划,背包,贪心等等。
【一面】
一面其实是基础面,面试官考查你的基础功底,只要能在3秒钟反应过来并回答,都OK的,我一面就很轻松的就过了。面试官打电话来是在下午快4点的时候,当时我在趴着睡,突然发现是杭州打电话来的,吓我一跳,一开始以为是广告,后来想想不对,最近投了很多简历,不能任性的挂电话了!!接起来果然第一句话是:您好,请问是###吗,我是网易杭州的! oh god 能不能有点征兆啊!赶紧跑出图书馆,开始了自我介绍,因为根本没有想到来的那么突然,过于紧张导致说话结结巴巴,想到什么说什么,管他那么多!!!
1.说绿岛开发的几个网站,说喜欢技术,说基础扎实,说成绩很好,说经常逛技术社区等等balabala。真是吓的心脏都要跳出来了。然后面试官说,好,不用紧张,开始吧!
2.说说乐观锁和悲观锁的区别。哈哈......心里一阵乐呵,此等问题怎能难我,终于开始平静下来了。然后说的面试官挺满意,我又扩展了一下,说数据库里有表锁,行锁,页锁,虚拟机里有偏向锁和自旋锁等等,面试官说不错,你知道的太多了.......(后面这个是自己加的!!!)
3.第二个问题是Java Object里有什么方法,基本答出来了,然后问为什么wati()和notify()要放在object类里。这个问题我以前想过,但是当时没有及时去解决,紧急之下,我说这个问题我没有考虑过,但是我可以猜测一下吗,面试官说可以。我说因为Java多线程里,线程争夺的资源说到底就是对象里的资源,那么每一个对象就必须具备有维护线程队列的能力,所以需要有这两个方法,一个阻塞,一个唤醒。面试官说分析的不错,貌似对我很满意吧,我又更有信心了。
4.然后说你懂Java多线程吗?我说懂一点,你可以问。他又balabala的问了很多,举几个线程安全的类,如何实现线程安全的HashMap,我说了两个,一个是Java里的 collection.synchronizedmap提供的帮助类,可以强制把hashmap里的方法都变为同步,第二个是Java 底层与硬件交互的JNI方法,将hashmap操作分片,转化为原子操作,又一个满分的答案。然后问了我平时会用哪些集合框架,看过源码没,我说源码都看过了,并且自己还用代码实现过,然后问我hashmap的底层数据结构,我说是数组+链表,并把冲突处理机制跟他说了一番.
5.于是继续深入问我,处理冲突的方法,我说一般来说有四点:
1开放地址法(线性,二次,伪随机);
2 链地址法
3 再哈希
4 建立公共溢出区。
面试官又夸了下我!然后问我数据库方面的,具体问题我就不说了,反正大致都回答上来了,有一道海量数据处理的问题,之前看到过,给他具体分析了一下,大致的问题包括索引,事务,触发器,存储过程,主从等等,95%都回答上来了。然后问我JVM的垃圾回收机制,这个因为寒假看过,先总起说是分代收集,新生代停止复制算法,老生代标记整理算法,永久代基本不清理,当然可以设置参数让它回收。
(这里只是简写,GC机制我说了大概15分钟,把我理解的并且自己举例子,结合操作系统的知识,让讲解尽量生动一点)。总之一面虽然非常紧张,但是大部分的问题都回答的不错, 最后面试官问我有什么问题想问的吗?我傻逼的问,我今天面试表现怎么样?(大家千万别这么问啊,我是脑子犯二了嘛!!!)面试官笑笑,说准备二面吧,过一周左右。顿时心里的石头都落下了,哈哈。。。真是吓了一身冷汗!!
一面建议:基础要扎实,半吊子是不行的,基本概念要理清,不要稀里糊涂的,不会的也不要乱猜,不然就是要在原有理论的基础上去猜,天马行空也不行,这不是玩想象力。知识面要广。一面还是那几本核心课课本,加分项:软件工程和设计模式。**
【二面-经验面】
二面是过了四天,当时HR加了我微信,然后要我视频面试,因为一开始网有点问题,然后就等了一会。过了一会,她拉来了一个人,一介绍是邮件事业部后端技术部的组长,顿时被震慑到了,隔着屏幕我都感觉到了杀意。深吸一口气,开始了面试。上来就问我做过什么项目,我说自己是绿岛的人啦,然后扯了四五个不起眼的项目,然后问我Java的项目,我说JSP+Servlet写过一个个人博客,Struts2搭过一个站点,在tomcat上能跑,hibernate和spring了解机制,但是项目倒是真心没有做过。然后组长就深挖我的项目,让我详细的描述,然后问我某个地方能不能改善,怎么优化,如果碰到新的业务,该如何扩展。好吧,其实这些我都会,哈哈!!!然后问我Java虚拟机优化方面懂不懂,我说知道原理,然后又让我简单的说了一下,反正二面虽然看似凶残,但我早已视死如归了。反正后面还问了点spring和servlet的东西,回答的不是很好。中途让我写了个算法和单例模式,需要线程安全的,双重锁搞定,并解释了一下为什么要双重锁。最后组长感觉问的也差不多了,该会的都会,不会的怎么提示都跟傻逼一样!然后就结束了,让我回去等消息。听到这句话,我就真的以为自己挂了,哎。。算了,早就料到了。。。。。
【三面-HR面】
HR面就相对比较轻松了,HR声音真的蛮好听的,跟听广播一样。基本就是聊天式的,问我一些规划,问我为什么选择Java,今后的人生打算,还有什么时候能过来,然后告诉入职的时间,我说6月中上旬能过去。然后就是挂了电话,等offer了。一切都来的太突然!!
【感悟】
从寒假开始准备找工作开始,到现在,跌跌撞撞的走了几个月,着实不容易。几点建议:
- 基础要扎实,几门核心课多看几遍
- 项目做的不多没关系,把做过的整理一下,看看有没有可以深入的地方
- 要自信一点,我感觉自己不够自信,可能是跟学校有关系吧
- 多看互联网的新闻,这样你就有得扯,久而久之就有自己的观点
最后,希望大家找工作顺利!!!
--by 冰天百华
2015年上半年