腾讯、百度、阿里面试经验—(2)百度面经

  接上篇,刚加入腾讯的日子还是很happy的,第一个项目就是独立开发一个抽奖营销项目,之后跟一个技术很厉害又有想法的前端牛人一起负责比较重要的项目,当然是他带我(当时的目标就是超越他,可惜到现在还没实现。大牛当年教育我说,新人刚参加工作这几年回家之后不要玩,要多学习这样才能成长的快,当时我还不以为然;现在想想真是金玉良言啊)。 在10年底的时候得到了一个机会去负责全新的领域iOS开发和 Android开发,因为我个人对前端技术(JavaScript等)不怎么感冒,还是比较喜欢做编译型语言的开发工作。当时组里的几个大牛对终端兴趣不大,老板就把这个光荣而又艰巨的任务交给了我。

  经过11年一年的艰苦奋战,本人和另一个一起入职的兄弟从无到有分别开发了iOS和Android两个应用(iOS是我们一起开发的,android是我自己开发的)。虽然现在看来当时的成果不算什么,但当时是在没有什么资料和经验的情况下摸索出来的,还是相当的不易。可惜当时的领导觉得我们做的并不好,一年下来才弄出这么个小东西,这是他的原话。年底的时候基本上一天被领导当着全组的面骂一次,这个领导是新领导,不是当年面试我的那个领导了。当时也是年轻不敢顶撞领导,但是不爽和负面情绪肯定是有的。所以开启了离职找工作的程序。

  12年初的时候被猎头推荐去北京的一家公司,后来才知道就是大名鼎鼎的百度。因为自信心爆棚,牛逼哼哼就去了。结果就是兵败莫斯科。被大大的打击了一顿。

  百度面试跟腾讯完全不同,百度面试非常重视技术、重视应聘者的基本功、算法、数据结构、C++、操作系统、面向对象、软件体系结构、系统设计和模块划分上的能力,可以说锱铢必较。这些东西在大学的时候本人可以说得心应手,但是面试的时候基本上一问三不知,连我自己都觉得不好意思。印象比较深刻的几个题。ObjC基础,这个就不说了,干了1年iOS开发的都会;响应者链是什么和原理,没答上;堆栈;进程调度;查找算法、排序算法;面向对象设计的原则;移动应用安全;c++指针运算,如何把一个数存到0x00这个位置。iOS性能调优。画出你的项目的模块图。很多都没答上来,面试官很nice说可能是太长时间没用了忘记了,机制没回答上来就问我你不知道机制没关系你可以提出自己的看法,猜他是怎么实现的,答对了一样有分。算是帮我挽回了点面子。

  这次面试失败对我的打击非常大,因为面试的内容并不难。想了一宿,其实加入腾讯只职业生涯的一个起点而已,并不代表你比别人优秀多少,很多比你更优秀的人没进来可能只是运气没你好而已。职业生涯跟长跑差不多,一开始你比别人领先一点,只要稍微放松,马上就会有比你更努力的人追上并超过你,不同的是,长跑更容易发现自己已经落后了,而职场上等你发现的时候可能已经晚了。程序员跟赛车手差不多,不是说你每天开车你的驾驶技术就能成为职业赛车手,而是必须经过专业的训练,有针对性的训练;同理不是你写了几万行代码你就是个技术专家,必须经过刻苦的学习才行。

  本人的缺点是容易得意忘形,优点是越挫越勇。经过这次打击,每天最少用4个小时的时间学习iOS各种机制、数据结构、重拾C++。疯狂写代码,每月5000行编码量,用了1个月时间重构了2w行代码。到了7、8月份的时候感觉功夫已经到位了,就决定再找公司练练手,检验下这个阶段的学习成果。

  这次猎头又给我推荐到了百度,去的是深圳百度分公司。感觉到百度好像很缺人,因为周一提交的简历周三就让我去面试了,百度筛选简历出了名的慢。一面还是上回那些,难度加了些问了写内存管理、线程调优的内存。小case,早就在我掌控之中。问了些Core Data、数据存储的内存,问了下闭包block和block在内存中位置,同函数指针的区别。一面进行了一个多小时。完事后让我等一下,看起来这把有戏。

  二面还是技术面,难度感觉比一面没高多少,因为考察的都是面向对象、设计模式上的内容,呵呵,这个对我来说太简单了,本人最大的爱好就是研究各种设计模式和软件体系结构。问了下我的项目中的体系结构,问了下MVC的优劣,如果设计松耦合的模块,组件化模块化的之类的。

  三面主要是精神层次的, 问下未来的职业规划,iOS和Android的差异性。你为什么不继续做前端转做iOS,如何看待iOS的生态系统。问为什么想跳槽,我回答说想专注iOS,现在腾讯让我又搞iOS又搞Android,又搞联调有点杂。最后问有没有什么要问他的。其实本人当时根本没有过档的打算所以说没有。接着hr面,这个时候已经很晚了,云了三个多小时,也不给一口水,有点小不爽。Hr面带着情绪面的,看在妹子挺可爱的份上控制了自己的坏脾气,hr可能也感觉到了我的抵触情绪,草草收场让回去等消息了。

  四轮面试都要自我介绍,说的我都有点恶心了,感觉像失足介绍自己来自哪,等客人挑选。人格魅力感觉都不如腾讯的组长。

  过了三天接到电话,问我这边的意愿,工资又远远高于的预期(本人就是这么鼠目寸光,老婆骂了我好多次)。当时身上有个很重要的公司级的项目,又觉得对不起腾讯的知遇之恩(因为这个老婆埋怨了我很多次),就拒绝了。

  但是对自己开发能力的训练机制算是稳定了下来,还是有收获的,基本上每天都自学到10点11点。后来易迅(易迅被腾讯收购其实就是腾讯的一个部门)的总监让我过去做iOS易迅客户端,承诺说办手续最多3个月。虽然机会很诱人,但是为了报恩也好,责任感也好依然拒绝了。

      其实公司和个人之间本质上讲就是商业关系没什么恩义,公司培养一个人也不是为了这个人的发展还是为了自己。business just business,跟感情混为一谈吃亏的还是自己。放弃了这两个机会之后,半年后本人经历了职业生涯中到目前为止最大的危机。如果人有预知能力就不会有那么多苦恼了。

  总体上感觉百度的面试要比腾讯容易些,因为腾讯注重的是软实力,也就是说天赋,知识、技能、经验都可以后天培养,但是天赋是天生的没法后天锻炼,只能通过努力拉近差距没法逾越。不过2011年后腾讯大扩张(不到一年狂招1w多人),招聘的门槛也没有那么高了。而百度更注重计算机技术和科学,这些东西通过努力都可以获得。

        郑重声明:本人只是参加过以上几家公司一两个部门的面试,一个公司不同部门的面试风格是不一样的,每位面试官的风格也是不同的,所以本人的观点是非常片面的。完全是个人的感悟和心路历程,不承担任何法律责任。

posted @ 2014-03-17 16:22  挽弓挽长  阅读(5617)  评论(10编辑  收藏  举报