一位自学生的努力与梦想

  1. 云栖社区>
  2. 博客>
  3. 正文

一位自学生的努力与梦想

cometwo123 2012-10-04 18:20:00 浏览1335
展开阅读全文
求职历程:
只面了两间,都是一轮笔试+三轮面试,拿到心仪公司offer后就木有参加其他面试了。
1、淘宝(研发工程师)终面后被BS,那RP...。
2、腾讯(后台开发工程师)成功拿到offer。

学习经历:
作为一个非计科专业的学生,三年自学血泪史历历在目。没人指导,靠自己摸搜,走过很多歪路,不被同学朋友理解,被老师当问题学生,被早学几年的前辈嘲笑。一度怀疑自己,长年处于坚持和疑虑之间。

两年前下誓言至今还一直保留在QQ个人介绍里:从今以后不再表示什么决心,用结果用事实用作品去证明自己一直在努力。为未来家人及爱人幸福的生活,为自己这一生没有白活而努力。甘愿今天活在一个人封闭的世界里。——2009/10/7

从一开是学delphi,什么都不懂东拼西筹做烂软件;到开始正式学C语言,遇到如鹏网,从《C语言也能干大事》找到启蒙方向;记得大二那一个寒假天天抱着《windows程序设计》来学,做了无数的小软件;后来学过很多东西,看过《C++primer》《数据结构》《汇编语言》《windows核心编程》。了解过反汇编,学GDI、opengl做过2D、3D小游戏,当然很多都是稍微尝试,浅尝辄止。

大二结束后的暑假北漂去北京跟杨中科老师学.net,这段北漂的生活很难忘,学习很充实,早上8点到5点,回去宿舍继续敲代码,经常敲到深夜1~2点,在400元租来9平米只容一张床一张凳的地下室里除了敲代码还是敲代码,在北漂学.net的日子里学到很多东西,杨老师很尽职,教的知识很深入,很贴切实际开发,课上最常听到杨老师苦口婆心地劝基础差又稍微懒惰童鞋:“上课要认真,回去还得好好敲代码。”北漂的学习日子开阔了我的视野,也让我渐渐明确自己的学习路线,为后来的自学打下良好的基础。

后来由于很多原因,最终没有继续学.net,甚至连图形界面也不喜欢了,在徘徊纠结之中开始渐渐转型到linux,C/C++黑窗白字的世界。回来后奔三了,我开始写简历,去各大公司看招聘信息,找准岗位,公司需要什么我就学什么。开始看《算法导论》参加学校的ACM比赛,由于大三了,拿了一等奖也进不去学校的训练队,自己去网站做OJ题,学《计算机网络》《TCP/IP协议》《Linux鸟哥私房菜》《UNIX高级环境编程》《UNIX网络编程》学习nginx开源服务器,自己学写JxWeb服务器(大三第二学期唯一写过这个项目,其他都是做算法题,更没有写有窗口的东西了)...

然后就是求职生涯,拿到腾讯offer,新的开始!上述书籍都是大牛们的神书,而我很多只看了一半,腾讯是我人生的转折点,我在奋斗的路上!与朋友们共勉!

求职日记:
2011.9.16——修改简历
这里很感谢boXer师兄,百忙的工作中还抽时间给我简历意见,简历最后被修改了两次(本人大三就开始写简历,这份简历已经是第n个版本了。提前写简历的好处非常明显,就像一面旗帜,提前明确自己的路线,简历缺什么就去学什么。到大四的时候,别人还在苦恼怎么写简历,我的简历已是第N版)。师兄满意后叫我用功准备笔试,腾讯对笔试成绩很看重。但我还是决定先用两天搞好我的JxWeb服务器项目。

2011.9.17——淘宝内推失败
中午醒来,突然收到淘宝的短信,呜呜,原来淘宝内推不成功。提示我自己去淘宝网校园招聘投简历。淘宝网的校园招聘要填的资料很怪,好像必须有懂java,然后我觉得自己淘宝算没笔试就悲剧了。继续做项目。

2011.9.18
开挂开挂!!!早上刚解决了弱智的内存释放bug,自己太久没写代码,真差劲,唉。继续。

2011.9.19——腾讯宣讲会,梦想的开始
今晚去了中大的腾讯宣讲会,刚好隔壁是网易的。中大+腾讯,两个都是我的梦想,一个在四年前已经彻底破灭了,希望我能腾讯这个梦想上成真。听了腾讯的宣讲会,我更加给它吸引了,我当时对它的感觉是:很有活力的团队,很有魅力的公司,很豪华的环境,很高级的待遇福利,很有发展前途。啊,心痒痒!偏偏腾讯的招聘流程非常匆忙,24号笔试,25~30号面试,国庆后就能确定offer了。我要加油,开OT,开挂!

2011.9.20
华工百度宣讲会,但我没有去,继续复习做项目!

2011.9.24——失利的腾讯笔试
腾讯笔试,总结来讲考的知识很广泛很基础,涉及到数据结构、数据库、网络原理、C++类特性、操作系统、linux系统、服务器等等,最后两大题都是经典的算法题:链表两路归并算法和图。第一题完全没问题,第二题看到有关图的,太久没用过图,脑袋完全空白答案自然也空白了,悲剧!之后当晚收到一面通知。事后才知道自己笔试成绩很烂,只是刚好过线没被刷,承蒙天神保佑,但失利的笔试成绩对以后的面试影响巨大。

2011.9.25——满意的腾讯一面
3点30分,华工大酒店40X房,一面运气比较好,问的问题都比较基础,自我感觉答得比较满意。但最后的开放题还是不会答,其实开放题根本没有标准答案,只要你给出自己和技术沾点边的想法就OK了。

2011.9.27——腾讯二面
2:00 二面。早上已经等得不耐烦了,没到1点就骑车过去。1:11去到华工酒店705室,但门是关上的,所以不敢打扰,等到1:51分才开始面试。隔壁房间一个是游戏策划的,另一个房间是销售的。那销售的童鞋,听游戏策划的MM说已经面了一个多小时,吹到天花龙凤,最后还谈工资了!羡慕妒忌恨啊!回归主题,这次面试的是腾讯安全中心的总监,还是问基础。问题如下:哈希和B树各自特点;linux中各种I/O模型原理——select和epoll、阻塞和非阻塞I/O区别;linux系统文件机制;多进程同步方式;C++多态原理(虚函数机制,能说出哪些是编译时确定、哪些是运行时确定、类对象内存形式就OK);都是基础不多说了。

两题海量数据处理:
1、请统计100W个不等长字符串中各字符串的出现次数(时间、空间复杂度都要低)我的答案:建立哈希表,遍历一遍让等长的字符串(我认为题目“各字符串出现次数”是要求字符串相同,而不只是相等,既长度也要一样)映射到同一位置,里面可以再哈希链表(链表元素是对应长度的字符串buf和计数器),有两种情况:一种哈希链表中没出现过就存储该字符串并将对应的计数器设为0,有出现过的就+1。遍历一遍就完成统计。然后遍历哈希链表的计数器输出就行了。时间复杂度是O(n)。但面试官问我还能再快吗?O(n)遍历一遍肯定是必须的,可能是中间某些细节问题。或者面试官在压力测试。

2、设计数据结构可以快速返回0~10亿中哪些数出现了or没出现。这题和一面的一样,而且更简单,125M的bitmap就够了。最后也是问我项目问题,对项目里各种技术点熟悉就OK。晚上6点,突然接到淘宝面试通知。但心系腾讯,夜点也收到了腾讯HR面,HR面加油!

2011.9.28——淘宝一二三面,腾讯HR面。
早上还是去试试淘宝,淘宝初试是在10点,我9点50分去到,签到后在侯听室等候,结果10点25分才开始面试。问题还是离不开:算法、项目、数据结构、linuxI/O模型。算法题很水——给出两个字符串,设计一个算法将两个字符串合并按字母排序。我一开始就说不就是排序后归并嘛,O(nlogn)。然后面试官说有更好的方法吗?又想想,哦,类似荷兰国旗问题,遍历一次统计各字符出现次数,直接按字母顺序输出,O(n)。这下他满意了。所以遇到简单的题目,还是先想清楚再回答。

淘宝的面试很给力,一面完,行得话马上二面,二面行得话马上三面!不过一面后,还得先去腾讯HR面,要求另约时间。然后回去宿舍休息,12点45分就过去华工大酒店了。在那里看到暨大面产品的漂亮MM,我居然木有问拿电话!后悔!!!

腾讯HR面试居然问我实习经历,木有实习过的表示郁闷。然后更悲剧的是,人家问我专业学得如何,我口贱自爆挂科!我勒了去!那HR说“哦,你挂过科,挂哪一科?”然后记录下来了。呜呜呜!!!我算诚实吧。之后听HR介绍了公司的某些流程制度。然后我很不安地离开了华工大酒店,直奔去中大面淘宝。二面又是问数据结构、算法、各种查找的优缺点、项目、linux系统的东西等,还问了一道智力题:有条村,N个人,发生了命案,N个人中有5个是凶手,每个村民都会讲一句真话一句假话,问至少调查多少个人才找出凶手。我勒了去,不懂。事后才知道,类似小白鼠试毒药问题,答案是:2^5,但明显他这题问题很多漏洞,小白鼠试到毒药会死,真话和假话怎么分辨出来。算法问了链表归并排序,要我写代码,原理是简单的,但写得很糊涂,他也看得很糊涂,我干脆讲一遍,他也就懒得看我代码了。

之后叫我直接去三面,听带路的说很少人能去三面,我也威风一次了。三面是两个面试官,一个技术,一个HR,但都很年轻,聊得很开心,先问技术后聊天,我又重复提那血泪的三年自学史,我感觉他们都比较认可我。然后HR就送我到门口,就结束了。后来才知道淘宝面试当晚发offer... 然后自己很自然被BS了。中途他问我有没问题的时候,我知道不问问题又不太好,所以我随便问了一个问题:“我数据库不太会,你那里要求数据库高的么?” 现在想起,自己真脑残...自爆弱项...总结:知识这么多,肯定有所专长,有所不擅长的,要善于引导面试官到自己擅长的地方,更不能脑残自爆弱项...

2011.10.13——腾讯offer
在中午饭的时间中收到腾讯电话口头offer,那激动的心情,真不容易。马上丢下饭碗给电话家人报喜。

再次鸣谢boXer师兄,他在我求职阶段不断给我意见和指导帮助我。如果没有师兄的帮助,可能我还在漫长的求职之路上。感谢求职路上的所有面试官认同我,给予我机会。感谢如鹏杨中科老师给我自学计算机的启蒙。如鹏的口号:“在校不迷惘,毕业既辉煌!”感谢父母家人兄弟朋友的支持和理解。还感谢自己能在他人不理解、嘲笑、诋毁下还坚持自己的梦想和努力。谋事在人,成事在天。感谢上天。


一面遇到所有问题如下:1、运行下面的函数会有什么结果?为什么?[cpp]
void foo(void)

char string[10],str1[10]; 
int j; 
for(j=0;j<10;j++) 

str1[j]='a'; 

strcpy(string,str1);
printf("%s",string); 
}[/cpp]


答:
(1)字符串赋值错误:str1[10]只能容纳9个字符和1个空字符。而题中for语法赋值了0~9共10个。
(2)strcpy里由于str1没有空字符结尾,导致越界不可以预料的结果。

2、写strcpy函数;解释:strcpy的原理大家都懂,但要注意程序的正确性、健壮性、可靠性。
答:

char*strcpy(char *strDest,const char*strSrc)//第二个参数的const要写上
{
if((NULL==strDest)||(NULL==strSrc))//健壮性——先判断参数是否为空
  return NULL;//当然这里可以抛出异常或者直接用断言,以便在众多应聘者中突出自己。
char* strTemp=strDest;
 while((*strTemp++=*strSrc++)!='\0');
 return strDest;
}


面试技巧:在实际面试中,我还故意判断了一下 strDest和 strSrc内存段有没有重叠,虽然不是必要的,但还是为了突出自己有这方面的考虑。
3、40亿个整型(32位)数据中怎么找出没有出现过的整型数字?为什么?
这题是典型的海量数据处理,面试中很常见。
答:32位整型总有42亿个,而题目总数只有40亿,肯定有未出现过的数字。可以开一个容量42亿的为bitmap——位的数组,每一位代表一个整型,一共需要内存是525M左右(若内存有限,则开到文件里去,但会明显增加硬盘I/O),遍历海量数据一遍,并在bitmap对应的位上至1标记。最后遍历bitmap,将标记位为0对应的数字输出即可。时间复杂度是O(n)。
4、STL各种容器的特点和实现方式;
熟悉各种STL容器,简单介绍一下就行了。
5、最后让我描述一下做过的项目,我选的是JxWeb服务器,涉及到知识点:master-worker多进程模型、epoll网络I/O模型、多进程同步、RTO超时重传机制、HTTP协议、怎么支持CGI、怎么支持HTTP1.1新特性等。
技巧:项目描述过程中,面试官会留意项目出现的技术名词,然后一一会深入提问,你一定要对自己的项目熟悉,不单要知道“怎样做”,还要知道“为什么要这样做”。
6、最后一道是开放性题目:如何鉴别垃圾诈骗信息并揪出犯罪份子(我一直以为揪出犯罪份子是公安局的事...)。
这题没有标准答案,但你不能不回答,讲讲你对这题目的了解和分析。

总结:如果面试中能较完整地回答八成以上问题,那就充满信心等待下一面。

网友评论

登录后评论
0/500
评论
cometwo123
+ 关注