码迷,mamicode.com
首页 > 其他好文 > 详细

2015届求职经历(转)

时间:2014-10-09 13:24:13      阅读:468      评论:0      收藏:0      [点我收藏+]

标签:android   blog   http   io   os   使用   ar   java   strong   

(以下内容,如有疏误,敬请指正。谢谢!如果有什么问题,也可以相互交流。)

先讲一下结果:腾讯和百度都给了offer。 
最后签了腾讯的offer。2015届毕业季求职生涯就此告一段落~(2014.9.29)

想着之前在应届生、itmian4等网站看过不少师兄师姐的笔经、面经。现在,也是回馈的时候了。

在这里,我不会介绍解题的具体方法、思路(这不是我的强项)。并且鉴于本人所学知识的特点,下面所讲的可能会偏向于C++和Linux。

 

个人觉得我的经历对现在还是大二大三的学生来说,还是比较好复制的。

 

在这里,我主要想介绍的有: 
1.笔试面试的基本情况(不是为了给大家提供面试的题目(网上从来不缺题目),而是让大家知道,笔试面试考的主要都是基础的东西,笔试面试并不难!!)。

2.简单说说如何准备笔试面试。

 

 

一、笔试面试的基本情况。 

这个秋招,我只面了bat三个公司。

8.25 阿里巴巴网上笔试 
阿里巴巴今年的笔试我觉得有点不靠谱。。。不多说了。印象中有很多概率论的题目。


9.16下午 阿里巴巴一面挂了 
总共问了我三个问题: 
1.一个只有一个数字的字符串。用尽可能多的方法将其转化成对于的数字。 
2.写一个vector。实现resize\opertor[]\clear。 
3.快速生成4亿个随机数。


整个过程感觉面试官很冷漠~连我的简历都不看。简单地挂了,不多说。 说实话,当时阿里巴巴的面试结果对我打击很大。。。毕竟,一面就挂了…… 我差点对后面的笔试面试失去信心。


9.20上午 腾讯笔试 
腾讯笔试的特点:25个不定项选择题。难度不高,但是范围很广:涉及编程语言、数据结构、操作系统、设计模式、数据库、计算机网络、概率论~还涉及一些对新技术的了解。


9.20下午 百度笔试 
百度笔试的特点:没有选择题。一般分为:简答题、编程题、系统设计题。都比较常见和基础~有认真准备过的同学基本都没问题。


基本上每次笔试的具体题目可以上itmian4查找。大家自己动手~


9.21上午 百度一面(技术面试) 
一面的问题都是很基础的: 
1.class和struct的区别。 
2.写个max的宏(这个我跟面试官说我写不了)。 
3.计算两个链表的交集、并集。 
4.链表的排序——用什么排序算法? 
5.如何找到一个链表的中点,写代码 
6.如何求一个整数的二进制1的个数——编程之美的题目。 
……(后面还有一点,记不是很清了。)


百度一面的问题都非常非常基础。感觉不错。当时看得出面试官很满意。


9.23下午两点百度二面(技术面试) 
9.23下午三点腾讯一面(技术面试)
 
两次面试的时间有点小冲突。当天中午十二点就出发了,先去腾讯的面试地点踩下点,再去百度面试。


百度二面的问题偏算法,但是不会很难。 
一上来,面试官拿了个pad叫我先把上面三道题做一做。我扫描了一遍,都是比较基础的编程题。 
当我做完第一题的时候,面试官就叫我开始面试了(当时真不是我写得太慢~)。 
我只记得前两题: 
字符串以单词为单位进行逆转。 
合并两个已排序的链表。 
聊了一下项目。(我的都是自己写的渣渣项目,没什么好说,可以看出面试官也没多大兴趣,问了一下,便没再问了。) 
问我觉得笔试怎么样?然后和我讨论最后一题(tinyurl)。这道题讨论了很久。 
又问了我两个题目: 
用1*2的瓷砖铺3*N的地板有几种方法。 
求二叉树两个节点的最低公共祖先。


二面结束,感觉不是很好。。主要是因为我刷题太少了。整个过程,面试官老是嫌弃我是本科生,似乎是故意的。。哈哈 
百度二面完成已经三点多了。。到了腾讯那边,迟到了将近一个钟。。不过,腾讯还是很快给我安排面试了~

 

腾讯一面的面试官给我的感觉很好,问的问题都是基础的 
1.自我介绍 
2.给我几道题,叫我做一做。都是C++的题,涉及指针、数组。 
3.写一个网络编程客户端与服务端的伪代码。 
4.write或者read返回-1怎么办? 
5.返回0代表什么? 
6.对socket可写的理解? 
7.设计文件传输协议。两种情况:传输图片,每张大小约50KB。传输热门(top10)的电影(很大,GB级别的)。 
8.设计管理定时器的数据结构(堆)。


因为之前在百度那边已经被“折腾”了一个多小时,在腾讯这边的时候,我感觉有点打不起精神。结果,腾讯一面的时间不是很长,只有半个小时左右,中间有一些简单的问题我答得实在不好。还好晚上十点多,收到腾讯的二面通知。


9.24下午腾讯二面(技术面试) 
我也不知道结果会如何。 
2014年4月份的时候,我参加了腾讯的实习生招聘,很意外,第一次参加招聘竟然一路从笔试,到一面,二面,hr面。更意外的是,最后还是被刷了。 
这次,感觉笔试,一面的成绩应该都不是很好。运气好进了二面,也不知道接下来会怎么样。——做最好的期望,做最坏的打算吧。


我在门口等面试的时候,面试官忽然走出来——问我是不是参加他的面试的。然后让我在外面先做一道题——设计一个内存池(其实和笔试的附加题差不多) 
我在外面简单写了写。 
进去之后,面试官,简单看了看代码。叫我谈谈思路。然后就在这道题目上增加条件,让我改进。不知怎么聊的,聊到内核的内存管理里面去了(不过都是很浅的知识)。然后,面试官说,好吧,这道题先这样。 
设计一个cache要考虑什么问题?如何解决? 
用UDP实现文件传输要注意哪些问题?(主要是超时重传和乱序) 
求最长回文子串——动态规划常见题目,可是我竟然不会。给了非最优的解法。 
还有一些问题,记得不是很清了。。。


二面的最后,面试官说:咱们来聊点非技术的东西好吗? 
1.你觉得你最大的优势是什么?最大的劣势是什么? 
2.你有没有遇到过什么难以相处的人? 
3.你喜欢和什么人一起工作? 
4.你对考研和工作的选择?喜欢工程技术还是科研? 
然后,面试官问我有什么问题。开始向我说腾讯内部怎么样、怎么样。。。地好!! 
最后,面试官说:“接下来,我还要安排你走一次hr资格面。你到5楼……”


9.24下午腾讯三面(hr面试) 
好吧,等了老半天。见到hr了 —— 是个人看起来不错的大叔。 
hr没问我什么问题。 
一上来,简单看了一个我的简历。 
问我知不知道我现在要去的部门具体是干嘛的?我说,不是很清楚。然后他就简单地跟我讲了讲。 
然后,问我的职业规划。 
然后,随便聊了聊。 
最后,他跟我说,你的面试现在是比较早的。xxxxxxxxxx。。


腾讯二面+三面,感觉不错。但是,作为一个曾经被“吓破胆”的人,还是不敢有百分之一百的把握(我是不是有点不自信啊??)。 
面完腾讯,回到宿舍。放下书包,手机就响了,百度通知三面。

  
9.25下午百度三面(综合面试) 
百度三面不像腾讯是hr面,而是一次综合的面试——技术和非技术问题穿插进行。 
百度三面,我真的很紧张。因为,我是到了最后才知道三面也是有技术问题的……面试官是个看起来很高级的人,应该很牛逼。 
技术和非技术问题穿插得很乱,我下面只能回忆一部分,不一定是按顺序的: 
主要的技术问题。 
1.read和write、fread和fwrite的区别。什么情况下,哪个效率高? 
2.写个vector,实现构造函数、push_back、pop_back,operator=。 
3.STL中的容器。 
4.一个概率题:足球比赛的时候,裁判会扔硬币,决定双方队伍的球门。有一次,裁判掏出一个硬币,结果发现硬币变弯了(即出现正反面的概率不一样了)。请你设计一种方案,让这个硬币可以继续使用。 
主要的非技术问题: 
1.对工作地点的选择。为什么? 
2.有没有人对你有什么影响?具体?(根据这个问题展开了不少其他问题,都是和具体的回答相关的,不多说)。
3.除了技术,你平时做什么? 
4.做技术,你不觉得无聊吗?

 

二、笔试面试小结

先总结一下上面这几次笔试面试:

虽然上面的面试过程我只能回忆个大概(那几天面试太多了),但是很明显可以看出70%~80%的题目、问题都是基础知识,所以基础很重要。可以说,只要你的基础够硬,offer就离你不远了。 
剩下的20%~30%要看: 
1)你的状态和发挥。笔试面试和我们平时在学校里的考试一样,不仅要看你会不会,还要看你发挥得好不好。 
2)你和面试官的缘分了。说到底,和面试官的缘分,就是运气。这也是整个求职的唯一你不可控的因素。但是,只要你的技术够硬,心理素质够好,这个似乎也不用担心。

 

下面讲讲基础知识的学习。

笔试面试的基础知识主要分成一下几个方面:

1)编程语言。

选一门自己喜欢的编程语言。不过按照目前的情况,你只有两个选择:C++ or Java。

2)算法与数据结构。

这个不用我多说。算法与数据结构是一种修养,可能你在实际工作中不会直接用到,但是它就是会影响你的代码。

3)操作系统。 

我想把操作系统的知识分成两大部分:基本原理特定平台(如Linux、Android、Windows、IOS等,我做的是后台,所以学的是Linux)。

4)计算机网络。

主要是TCP/IP协议。互联网行业主要考的是传输层(TCP和UDP)和应用层(常见应用层协议协议,HTTP最常见)。IP基本没考,至少没考深入一点的。

5)数据库。

数据库一般考得比较简单。一些基础概念、范式、SQL。

6)概率论、排列组合。

我没有专门准备过这方面的知识,只是在网上刷几个题,熟悉熟悉而已。


下面针对上面几点,讲些具体的(主要是根据我个人的经历)。


先上两张图。

bubuko.com,布布扣 bubuko.com,布布扣

这些是我大学期间买的书(小部分是从学校图书馆借的)。当然里面有的还没怎么看过的有的看过一部分但是看不懂有的看了一遍有的已经看了两遍甚至三遍。此外还有部分书已经还给图书馆(看完或者没看完)。

 

大一大二浪费了两年,我是从大二的暑假才开始决定要找互联网行业的工作的(之前一直在数电模电方面的东西)。不过幸运的是,我很快就知道自己想做服务端的开发。

 

大二的暑假

在此之前,我只学过C语言和数据结构。

整个暑假看了几本书:

《Unix环境高级编程》——这是我学Linux编程的第一本书,那个暑假把上面的代码敲并运行了一遍。后来又陆陆续续再次看了一些重要的章节。再后来,遇到不懂就到上面查。不过现在觉得看man page更好。当然入门还是得看这本书。

《程序设计实践》—— 这一个老师给我推荐的,很不错。上面的C、C++的例子我都在电脑上敲过。

《Linux内核设计的艺术》—— 讲Linux0.11的源代码。但是我还根据这本书注释了Linux0.11的内核。可惜后来电脑出了问题,代码不见了。

还看了一本操作系统原理的入门书,书名似乎叫《计算机心智——操作系统之哲学原理》,讲得很通俗易懂(不过现在觉得《现代操作系统》更好)。

 

大三第一学期

也看了几本书:

《Unix网络编程 卷1》—— 这本书主要讲的是套接字(socket)编程,敲了大部分例子。唯一的缺点就是,书上的例子实在是太无聊了……

《Unix网络编程 卷2》—— 主要讲的是进程间通信(IPC)和同步。这本书我只挑了部分学习而已。

开始看《深入理解Linux内核》,不过基本看不懂。。。。

当时,我也开始纠结我是否应该学习C++,当时我还只学过C而已。

后来,我买来了《C++ Primer》第四版的开始学习(其实当时第五版已经出了。。。不过第四版当时打折便宜几十块……)。C++入门的时候有点痛苦,所以我也是断断续续的学。

寒假的时候,找个和简单的web服务器的源代码,看和注释了一遍。顺便看了《浪潮之巅》,哈哈。

大三第二学期

C++学了一段时间,似乎没什么进展。主要是因为我总觉得现在没必要学习C++。反正C对当时的我来说已经够用了……

这个学习我开始看《TCP/IP协议详解 卷一》《深入理解Linux内核》看不懂,所以我换了本《Linux内核设计与实现》,这本讲得简单一点。看点计算机原理的书——看了《深入理解计算机系统》

四月份的时候,参加了腾讯的实习招聘。因为基础还不是很扎实,整个笔试面试的过程确实让我认识到了自己的短板,也渐渐明白了笔试面试是怎么一回事。

后来面试了几家公司,都不顺利。我开始反思自己,暑假,是随便找个实习,还是安心在学校打基础呢?我的决定是,在学校学好基础,再好好准备秋招。当时我也不知道自己的决定对不对。

在大三剩下的时间里,我把《TCP/IP协议详解 卷一》看完了,也把《Linux内核设计与实现》看完了。因为经历过腾讯的实习招聘,知道他们很重视C++基础,也就有了学习C++的动力了,把《C++ Primer》扫了一遍又一遍。并且简单看了一下《Effective C++》、《深度探索C++对象模型》

后来在Linux用C++写了个简单的FTP服务器,算是对C++和网络编程的总结了。

在这学期中间我自己还写过一个很简单的操作系统的demo(现在看起来觉得很简单,当初写的时候觉得挺难得),可以在虚拟机上面运行。

后来又买了一本书,陈硕大牛的著作《Linux多线程服务端编程:使用muduo C++网络库》

 

大三的暑假

暑假回家一个星期,然后都待在学校看书、敲代码。主要做了以下这些事:

1、操作系统原理和Linux

《深入理解Linux内核》、《Linux内核设计与实现》和《现代操作系统》穿插着看。

2、Linux编程

再次看了《Unix环境高级编程》的重要章节。

看了《Linux多线程服务端编程:基于muduo网络库》,这本书可以学到很多东西,特别是作者提到的很多参考文献(我很多还没看)。

3、C++

《C++Primer》后面类、面向对象、模板部分再看了一两遍,敲了几个大一点的例子。

《Effective C++》《More Effective C++》《Effective STL》简单看了一遍。

4、算法与数据结构

《数据结构与算法分析:C语言描述》。

5、刷题

遗憾的是,我刷的题目并不多。

leetcode只刷了四五十道。

《剑指offer》和《编程之美》只简单看了一半,很多都是理解了思路,没敲代码。

 

大四前两个星期

刷题 —— 去网上找整套的笔试题,最好是你想去的公司的往年试题。

看书 —— 这个时候,缺什么就补什么了,比较零碎。

 

总结一下

暑假两个月做的事看起来比较夸张,主要是因为里面很多书之前都看过了,所以看起来比较快。有一些也是从大三第二学期期末开始看的。当然从大二暑假到现在,中间我还看了不少其他的书、博客,但是那不是主线,也很难一一列举出来。

 

十年磨一剑。大学也就只有四年。就算毕业了,路还很长。大家加油!!!

 

上面提到的很多书都可以再网上找到扫描版的(虽然有点侵犯知识产权,但是作为没有经济收入的学生党,就自己看着办吧!)。后面有时间我再陆续整理一些资料出来……

 

转载至:2015届求职经历

作者:_LJH_

2015届求职经历(转)

标签:android   blog   http   io   os   使用   ar   java   strong   

原文地址:http://www.cnblogs.com/justinjia/p/4012524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!