美团2015校招面经-软件研发岗 (拿到offer)
![](https://i-blog.csdnimg.cn/blog_migrate/5fdea861839ba3846bc3bd3c39a623d8.png)
一面
上来我问“要自我介绍不?”。面试官一上来说不用了,先写几段代码吧!然后,第一题:给你两个字符串str1,str2,找出str2在str1中的位置。我一看题目心中暗喜,这个好做,好歹都写过求两个字符串的最长公共子串,求一个字符串的重复子串,求一个字符串的最长回文串。这个题比这几个都简单,小case,啪啦啪啦一下子写好了。给面试官看,并给他介绍了下,第一题通过。
接着又问,“阿?!你还实习过啊,还搞的云计算啊。那你讲讲你实习把”。有备而来啊,我就啪啦啪啦一遍讲一遍画,在纸上把cloudstack的架构和原理,说了一通。并且还把我实习时,写过的shell脚本(cloudstack环境自动部署)拿出来给他看了下,还把其中用到的一个小的交互和他讲了下。面试官说,教父级的啊!我说还好,我在虚机上测试过多次,可以正常运行。再把实习做的事和他说了下,这方面算是认可了。又问了关于项目的,这方面难不倒我,哥都准备好了,兵来将挡,水来土掩,讲的清清楚楚。
紧接着又问了,计算机网络懂不?我说懂点,那我问你啊,在浏览器里输入美团网的URL,会经历哪些过程和设备啊?心里又窃喜啊,这类题目在那儿见过的,啪啦啪啦,从DNS、代理服务器、路由器、负载均衡、服务器,各种UDP、TCP等等讲了一通。他也很认同,轻松又创了一关。
然后,又问,操作系统懂不,我说懂点。那你说说进程和线程有什么区别啊,这个都是被面试官问烂了的问题,我还能不会吗?劈里啪啦的讲了一通。面试官点头嗯嗯。又问,进程、线程间通信方式有哪些各有什么特点啊,这个又是被问烂了的题目,自然轻松过关啊,看我这么有激情地说,套接字常用在远端进程通信,他突然打断了我“那本地可以用不?”这个当然可以啊,一般服务器和客服端调试不都这样吗,我说,不过,这有点小材大用啊。面试官连忙点头,嗯嗯!
“那,再给你出个问题哈”,我说“好的”。“你怎么统计南京市有多少辆出租车?”我靠,这个怎么整啊,我想都没想就蹦出一句,“找交管部门查呗!”。他说,“不能查!”。这个我得想想了,刚开始还是从计算公路上的车的流量来算,后来想想车都是移动的,这怎么整呢?结果灵机一动,这不是再考我样本估计总体的思想吗?然后,我就告诉面试官,我有两种方案,不过都是用样本去估计总体的思想。一个是按人口和车辆的比,一个是按面积和车辆的比,最后有补充了点儿,各地方的人口密度和车辆密度是不同的,所以选几个典型的样本区统计,求平均去估计总体。减少误差。这个思想也被认同了,好了,总算一面过了,和一面官的聊天还是挺哈皮的。结束时,他说,我这边你过了,去休息室准备二面。
二面
上来就让我介绍了项目,说到决策树相关的,介绍完了,还说这是你想出来的啊?我说看到数据结构和算法里的,借鉴过来的。紧接着出了个题吗,1000!末尾有多少个0,看了题目,有点晕啊,这怎么算呢,一点思路都木有。二面官人还蛮好的,一边说题目,一边说,你可以先算个10!,100!看看。顿时就有了思路,其实就是看因子里有2*5的个数,其实只需看因子5的个数就可以了,2的个数一般比5的个数多的,只需看5n%5==0,m=5n/5,算出5的倍数中因子5的个数就可以了。
接着出了一个三角矩阵的题目,每次只能向下和向右下走。刚开始还木有思路,最后竟然想到将矩阵转换为二叉树,对二叉树进行先序遍历。二面官说你还能想到这个啊。那你编程实现以下。我靠,这个还要建二叉树啊,不是很好弄啊。面试官说,那你写个二叉树求和最大时的路径吧。好吧,这又转到剑指offer上了,劈里啪啦就写好了。然后面试官看了下,不错,二面就结束了,二面结束已经将近1点了,还没吃午饭啊,又困又饿啊。下午3点还有腾讯的面试,这个可不想错过啊,上去和HR说了下,HR人还蛮好的,直接把我的简历拿到最上面。
三面
三面那个囧啊,嘴里塞了一嘴面包,HR喊的时候,直接就去了,忘了带水。见到三面官的时候,我还在嚼面包,想吐出来,又不知道往哪儿吐,想吞进去,又咽不下去,哎。。。那个囧态简直难以忘记啊!三面官看到此态,笑了,说你是不是要喝点水啊。我马上说是的啊,他向我指了一个地方,那儿有水。靠,救星啊,倒了两杯水,给面试官也倒了一杯。一起拿过去先把水给面试官了。三面官说,你先喝点水,不急,我看看你简历和资料。
就这样三面开始了,刚开始是闲扯啊,又讲实习的项目,讲了一半,他貌似看到以前面试的评语,说这个是不是以前说过的啊?我说,是的啊,他说,说过的就不用再说了。然后就让我回忆你有哪些优点了,我先把本科的一个故事给他讲了。然后他还在问,可能你平时没注意,你再想想还有什么事能表现你的一些优点的。我想啊想,又把研究生的一个故事给他讲了。然后还在问,还有不,你再想想。我就在想啊,这面试官真不错啊,人太好了,一直在挖掘人的长处啊。我每讲一个故事,他都在纸上做记录,满满地写了几张纸啊!感动啊!
故事讲完了,又问我,你一般在网上看技术文章不?我说看,他说在哪儿看啊。我说CSDN,博客园。他也在做记录,然后问,那你有博客账号不?我说有,他说,那你能给个链接不?我说,链接不记得了,那给个搜索关键词吧,我就给了。我还以为3面就这样聊聊就好了呢。没想到,又出了两道题,一个是写个乘法的宏定义,果然是没注意啊,要加3个括号#define multply(m,n) ((m)*(n)),这样才对啊。哎。。。我只加了一个,在面试官的提示下,才想到加3个。确实觉得面试官人不错啊,大美团确实不错啊。又问了,宏定义和内联函数有什么区别吗,分别在什么样的场景下应用啊。我答了内联函数在编译时,将调用处进行函数替换,避免调来调去压榨出栈的时间开销,以空间换时间,还有内联函数有类型检测,宏替换没有类型检测,内联函数只是向编译器申请,若内联函数体内有循环递归等,申请会失败,系统会当初普通函数处理。又问了如果设计一个string类,要注意什么问题。我答了,注意内存泄露啊。如果是继承,基类的析构函数要设计成虚函数。拷贝构造函数和赋值函数要注意异常安全,还有不能拷贝指针。然后就是3面结束了,等通知。
总结
美团的面试官给我很好的印象,都是比较严谨,平易近人的那种。还有就是面试官多是以发现者的眼光去面试一个人,有很强的包容性,这一点,我很喜欢!
注:本文转载自CNBLOGS,作者“无疆之马”。
阿里2015校招面试回忆录(拿到offer)
![](https://i-blog.csdnimg.cn/blog_migrate/886935f753e378a1f151db493c4f750e.png)
引言
在说具体的面试场景之前,一个小插曲很有必要说一下:
由于我面的是Java开发,但当时负责人员给我安排了一个C++面试官(在面试官桌子上放着一个“C++方向”的牌子),然后我就跟负责人说“我是面Java方向的,不是C++方向的”,结果那个面试官笑呵呵的说“没关系,在我这面一样的,如果你不懂C++,我可以不问你C++语言方面的细节问题”,当时我心里想:虽然我C++学的和Java差不多,就算面C++也没有问题。但是既然面试官这么说了,肯定不问C++了,Java估计也不会问(C++方向的工程师不一定懂Java呢),应该是问数据结构、算法、网络、操作系统方面的问题了。虽然都有所准备,面起来也可以,但是鉴于两个方面的原因,我还是没答应在这面。
(1)据说阿里90%都是招Java工程师,如果在这面后面肯定会以为我是面C++的,胜算就少了;
(2)我这几个月基本上都在专研Java方向的知识,也研究了不少JDK源码和Java相关的项目,感觉自己的Java方向知识有了一个质的提高,因此希望面试官能够考查和检验我这方面的知识。
因此我当时跟那个面试官说“不好意思,我还是希望能面Java方向的知识”,那个面试官依旧笑呵呵“如果你对Java知识的确非常自信,那么可以给你换个Java方向的面试官”,然后我只能说“是的,我有研究过很多JDK源码,也做了不少Java项目”。最后,我出去找负责人给我安排Java方向的面试官,负责人说“那你要等会儿才行,估计要半个小时”。“哦,没关系,那我等会吧”,心里想:等不怕,方向搞错了才要命。
说上面这段插曲的目的是想告诫大家,如果你有比较明确的方向,比如“我以后一定要做C++/Java方向的开发”,那么一定要强调出来。如果像阿里这样每个面试官都有个方向牌那很容易搞定,如果没有则可以在面试一开始的自我介绍或找其它机会说出来让面试官知道,可能有人认为语言不重要,关键是算法、数据结构、操作系统云云……是的,很多面试官都跟我说过:在以后的工作过程中,语言不重要,重要的是你以后做的东西是不是你感兴趣的,但是我认为语言在面试过程中是有非常大的关系的,如果你是C++方向,那么面试官可能会问你一些虚函数机制、Linux下的内存分配策略、内存管理、常用系统调用等这方面的知识;如果你主攻Java,可能会问集合类区别、可研究过jdk源码、数据库等方面的知识。
因此面试的第一步就是让面试官明确知道你主攻的语言方向(可能也有较好的面试官会在提问之前首先问你懂Java还是C++),如果你两个方向都非常懂并且没有比较偏爱的方向,那就无所谓了。
一面:技术面
(40分钟)
半个小时没到,终于给我安排了个Java方向的面试官,这次交流非常愉快。下面的“面”代表面试官。
第一阶段:自我介绍
面: 请简单自我介绍下。
我: 我是XX大学计算机专业的一名XX,我研究生期间的方向是XX,……(方向简单描述)。12年暑期在XX公司实习了4个月,做的是XX(在一所不知名的本地小公司实习过)……(其它重要项目的简述)。另外,自己是名开源积极分子,有自己的Github,而且今年暑期参加了CSDN举办的开源夏令营活动,做的是……
阶段总结:上面只是我自己当时的一个简单自我介绍,经验不足讲的比较乱,而且忘了讲自己十分热衷技术,平时喜欢写技术博客等事情(有些情况下可以加分呢)。建议大家都定制好自己的版本,讲出自己的亮点。
第二阶段:介绍研究生期间的论文项目,针对介绍提出几个相关的技术问题
面: 好,我看下简历。(然后对着我的简历看了十几秒,指着我的第一个项目)这是你刚说的研究生的论文项目吧(我嗯),那你把这个项目详细说下。
我: 我从项目的选题(为啥要做这个方向)、项目采用的技术、新颖的地方、最终达到的效果(由于我做的是某个算法的性能提高,那么我就会讲速度提高了多少?空间压缩了多少?)这几个方面详细介绍了自己的项目。
下面就是针对我的叙述具体问了几个技术相关点,这没什么好说的,因为每个人做的项目不一样,问的东西也不一样。
阶段总结:其实要求讲的这个项目是用C++写的而不是Java,不过没关系,对于项目而言,语言就不是很重要了,关键是项目的架构、所采用的技术、能达到什么样的效果。面试官选的项目一般要么是简历中项目经验的第一个、要么是有他感兴趣的、要么项目做的时间比较长的,因此建议在写简历时,把你认为最有把握的项目放在第一位(而不是传说中的要按时间倒序来写项目经验),没太大把握的不要写(被抽问到就惨了)。只要你真真正正的吃透了被抽到的项目,那么这个项目提问阶段是完全easy的。
第三阶段:Java方向的知识,包括JVM原理、垃圾回收机制等
面: 你Java学的怎么样?
我: 还可以,有研究过部分JDK源码,比如常用的集合类如HashMap/Hashtable、ArrayList/LinkedList、Vector等,还有Java5之后的并发包JUC如concurrentHashMap、Executor框架、CopyOnWrite容器等。自己很欣赏Java巧妙的垃圾回收机制,看过周志明的《深入理解Java虚拟机》,因此对JVM相关的知识有所掌握……
面: 嗯,学的挺深的,那你把JVM的结构和类加载原理说下。
我: 马上拿起桌上的笔和纸,把虚拟机运行时包含的几个数据区和执行引擎画了下,包括方法区、虚拟机栈、本地方法栈、堆和程序计数器,然后介绍每个区域有什么作用,最后讲ClassLoader的类加载机制,还顺便说了下双亲委派机制。
面: (面试官点头表示满意)你刚刚说Java的GC机制很巧妙,那么它的巧妙之处在哪里?
我: 我从两个方面说下自己的理解:一是Java的内存分配原理与C/C++不同,C/C++每次采用malloc或new申请内存时都要进行brk和mmap等系统调用,而系统调用发生在内核空间,每次都要中断进行切换,这需要一定的开销,而Java虚拟机是先一次性分配一块较大的空间,然后每次new时都在该空间上进行分配和释放,减少了系统调用的次数,节省了一定的开销,这有点类似于内存池的概念;二是有了这块空间过后,如何进行分配和回收就跟GC机制有关了,然后我详细介绍了GC原理、画图表示年轻代(Eden区和Survival区)、年老代、比例分配及为啥要这样分代回收(我认为巧妙就在于这里),有了GC基本结构后,我又详述了下GC是具体如何进行内存分配和垃圾回收的。
面: (面试官一直点头表示对我回答的赞同)嗯,看来你对这块的确掌握了,对了,你说你参加的CSDN开源夏令营项目是阿里的是吧(我点头),这个夏令营是什么情况?
我: 我简单介绍了CSDN举办此次夏令营的目的,顺便说道此次夏令营活动当初有2000多人报名参加,最终只筛选出60多名,自己凭着开题报告和对开源的热爱赢得了导师的青睐得以入选。
面: 你导师是谁?
我: 淘宝的XX。
面: 哦,他啊,我认识呢,他是……(后面就简单闲聊了几句,该阶段结束,面试官让等会儿准备二面)
阶段总结:上面的对话有人看了过后可能会说:好简单啊,问的题目都是你会的,当然能过啦。是的,其实这是有技巧在里面的,就是要想办法“先下手为强”,啥意思?即让自己成为主动摊牌者而不是被动回答者,找机会跟面试官说自己熟练掌握了哪些方面的知识、自己喜欢专研什么等等,就像上面我所做的,一开始摊牌说明自己掌握的知识处在哪些地方,引导面试官去问你想让他问的知识点,这样达到双赢的目的(你爽了,面试官也轻松了,因为他不用老是猜你可能知道哪些东西然后试探性的问你这个会吗那个了解过吗)。
二面:技术面 + HR面
(1小时)
一面很轻松的就过了,但是二面就相对而言有些吃力,问的完全是项目相关,而且不是我最熟的研究生期间的论文项目,而是另外两个项目,由于复习不到位,某些地方回答的不完善。
第一阶段:自我介绍,同上
第二阶段:介绍面试官感兴趣的两个项目,一个与推荐系统相关,另一个与Java web相关
面: 介绍下你简历上的这个电影个性化推荐引擎,使用的是哪种推荐算法?
我: 改进的基于用户的协同过滤推荐算法。
面: 那好,那你从项目的基本架构、所使用的算法原理、如何改进的、数据如何处理这几个方面介绍下你的项目吧。
我: 我首先画了下项目的架构图,据此图详细讲了下UserCF的原理及如何使用用户的社交数据和六维理论改进传统的UserCF,并写出了改进后的算法公式。然后又说这个项目的数据多大,代码中采用什么数据结构进行处理的。
面: (介绍原理中提到了利用用户相似性来作为推荐的一个参考,面试官追问)那用户的相似性你怎么算的?
我: (汗,这个有个计算公式,我不太记得了,最后根据自己的理解讲了下余弦相似性的计算方式,公式没写全,面试官问公式里的根号怎么算的,我说直接用Java的库函数)
面: 你这数据哪来的?有几类数据?数据的存储格式是什么?
我: (该项目时间有点久了,前几天只复习了项目的整体架构和算法原理,忘了看具体的数据了,这里只能凭自己的记忆讲了下数据的存储格式,回来后发现自己讲的虽然没错但不够具体)
附:该电影个性化推荐引擎我早已经放到了自己的Github上面,是自己在老师的指导下做的,纯算法,还比较简单有待于改进。
介绍完了这个项目,马上面试官又看中了另一个Java web相关的项目,马上追问。
面: 嗯,你这个XX系统是用ssh2框架做的,那你对这个框架熟吗?
我: 嗯,当时在公司实习时对ssh的掌握程度只是会使用级别,那时候没时间去研究框架背后的原理。后来有闲暇时间后,我就深入研究了下这几个框架的原理,还看了部分spring的源码,学到了不少知识。
面: 嗯,那你把这三个框架都介绍下。
我: 我开始按自己的理解按Hibernate、Struts、Spring的顺序开始讲,Hibernate讲到它的使用原理及与iBATIS的对比,顺便说了下现在似乎大家更倾向于使用iBATIS、myBATIS这样更加灵活的轻量级框架。struts讲了下它的作用就是“将请求与视图分开”,然后讲述从输入url到使用struts处理的控制流程(struts从tomcat那接管、action处理),然后也说struts现在似乎也不那么倾向于使用因为它有漏洞。最后重点讲了下重头戏Spring,详细讲述了它解耦的功能、AOP原理及自己有利用动态代理简单模拟实现过一个简单的AOP功能、IOC(DI)等。最后说,从web应用层面上看,Hibernate属于持久层,struts属于表示层,而Spring却贯穿所有于所有层(表示层、业务层、持久层),Spring也有自己的MVC模块、web模块及JDBC和DAO模块,只是很少使用,也就是只用一个Spring也是完全可以的。
面: (点头表示肯定)你刚说到struts有漏洞,那么Hibernate是安全的吗?有没有可能发生xss攻击和sql注入攻击?
我: (汗,这个问题真心没想过,对Hibernate的掌握没有Spring那么深,只能硬着头皮按自己的理解回答)这个问题没想过,不过我觉得框架没有绝对的安全,Hibernate是用来操作数据库的,hql语句里也有select、where判断,应该有可能发生sql注入攻击,xss攻击就不太清楚了。(这个回答太糟了)
面试官没说啥,一直在电脑上写着什么东西。这时候旁边的HR终于发话了。
HR: 你本科是哪的?为什么选择考研?
我: 开始说出我的“发家史”,从一所不知名的小二本考到了中科大,……
HR: 那你技术上是怎么学习的?
我: 又从本科说起,本科技术很差,到了研究生期间才真正开始技术上的修炼,……balabala
HR: 你的职业规划是什么?
我: ……(每个人的想法不一样)
HR: 你最大的优势是什么?
我: (自己吹吧,也要根据实际情况看)
……
阶段总结:再次说明项目的重要性,第一个项目有些记忆模糊,答的有瑕疵,这里要引以为戒(一定要对项目知根知底),第二个项目感觉答的还可以,不过Hibernate安全问题没答出来,我觉得只要你其它问题答的很好,有个别问题答不出来是不会影响最终的offer的。HR面也很重要,你得说通了,需要提前考虑好常见问题的回答。
第三阶段:到你提问了
自由发挥阶段,可以问问公司内部的培养计划、晋升机制、是否经常有大牛分享技术让我们学习等等……
总结
(1)整个面试过程中没让写代码,没问Linux下的一些知识,也没问操作系统、计算机网络相关,我觉得可能是Java面试更倾向于从项目中问相关的技术问题,如果你没项目或项目不多,那么就可能问这些计算机基础知识了。
(2)由于之前内推电面的失败,让我丧失了一些小自信,因此在这次阿里的整体面试过程中还是有些紧张,大家请引以为戒,务必在面试中保持淡定的心态,就当是和朋友在一起交流技术问题。
(3)最后,希望我上面对话形式的面经能够给正在找工作或以后找工作的同学们带来一些借鉴意义,希望你们能够从中看出某些问题的答题技巧和所做的准备工作。
作者:敏敏Alexia,欢迎关注她的个人博客:程序媛想事儿。
百度2015校园招聘面试题(拿到offer)
![](https://i-blog.csdnimg.cn/blog_migrate/799885968f3eadc1d9610bd69e2ca05a.png)
一面
(一小时)
1.面试官从简历里抽了一个较感兴趣的项目,让把项目简单介绍了下,针对项目问了几个技术问题
2. 介绍Java中垃圾回收机制,程序员平时需要关注这个吗?为什么?请举例说明。
3. 数据库隔离级别介绍、举例说明。
4. override和overload的区别。
5. 求二叉树的最大距离(即相距最远的两个叶子节点),写代码。
6. 两个栈实现一个队列,写代码。
7. 你觉得你的优势是什么?有什么技术薄弱点吗?
8. 目前手上有offer吗?
二面
(40分钟)
1.详细介绍研究生期间的小论文项目。
2. 求二叉树的宽度,先简介思路再写代码。
3. Hashmap、Hashtable和cocurrentHashMap的区别,要讲出它们各自的实现原理才行,比如Hashmap的扩容机制、cocurrentHashMap的桶分割原理、多线程安全性。
4. 进程调度算法,有哪些算法比较难实现?
5. linux下如何修改进程优先级?(nice命令的使用)。
6. linux下性能监控命令uptime介绍,平均负载的具体含义是什么?建议看server load概念。
7. linux下如何调试程序?说到gdb,具体如何调试?如何查看core文件中的堆栈信息等(bt指令)。
三面
(1小时20分钟)
1.介绍我研究生期间的论文,讲的很详细,每个点具体采用的技术、实现方法等,花了较长时间。
2. 打印二叉树两个叶子节点间的路径,写代码(汗,百度这么喜欢问二叉树)。
3. 字符串中第一个只出现一次的字符,如何优化算法使得遍历次数更少?
4. socket编程相关,如果服务器这边调用write写了100个字节的数据,客户端想要获得这个数据,是直接用read系统调用,参数也是100吗?
5. 百度新闻缓存预算问题:一般为了追求时间性能,都需要缓存一些新闻数据,你怎么计算所需预算?然后申请需要的主机……
6. 多线程的适用场景是什么?为啥要用多线程?
7. 问是否会go语言,……
8. 为啥对技术感兴趣,一些相关问题讨论。
9. 聊北京、谈offer。
总结
三面都是技术面,总体下来没有特别难的题目,从我的面试情况来看,百度这次非常看重面试者对二叉树的掌握情况,还有所做的项目详细介绍。
作者:敏敏Alexia,欢迎关注她的个人博客:程序媛想事儿。
微信、网易游戏、金山西山居、人人offer及面经
![](https://i-blog.csdnimg.cn/blog_migrate/1206e40fc1a58b7fcd48837c506c023f.png)
面经 微信后台开发工程师 01 一面
一上来丢了6个算法题过来做,要四十分钟的样子搞定,单都是基础算法,什么链表,二叉树之类的,其中的两个字符串的最大公共子串没有较好的解决办法。问key/value缓存,它具体是如何实现的。瓶颈在哪,怎么保证负载。后面问腾讯互娱后台的负载均衡低耦合架构,这里说的不是很好。问磁盘效率优化,如何做的优化,测磁盘数据怎么测,通过什么命令(top,iostat),iostat的参数如何去看,读写队列,等待时间与服务时间的比例,空闲比例。编码规范(命名规范,固定的括号样式,函数注释与关键注释,异常说明,类的访问控制规范)。问网络编程应该注意的地方(TCP和UDP取舍),问UDP实现可靠传输是如何实现的。是否做过测试,拿scp来做为对比的恰当性。问网络方面的调试用到的命令,如tcpdump,lsof,netstat,问编译器,如何实现的,是否考虑到中文编码问题的解决。编译器的实现流程。问查看一个进程的运行情况的命令,top,/proc/pid/,问如何统计出函数的使用频率,用valgrind。==。压力较大的一次面。。
02 二面二面总监面,自我介绍,之后问我做的最好的一个项目,说了编译器,最后再叫我介绍个项目,说了UDP文件上传服务,问了UDP可靠传输的具体内容,好奇为什么速度可以达到SCP的两倍。问我本科为什么没写什么东西,答的不好。问平时读什么技术书籍,自己说linux内核详解,我说内存,介绍了一遍,最后问内存这块有什么用到项目中的吗,其实是没有,但可以说的更好一些的,如可以说对动态内存的理解,线程创建实际的开销在内存方面是有多大。说了文件中的mmap,直接I/O。问三个优点,最大的缺点。。
03 三面三面hr面,自我介绍,以后自我介绍尽量要充实点,问了拿到几个offer,问了以后的工作意向,是否愿意留广州,问自己觉得做的最出色的一个项目,为什么是最出色的,嗯,这点要多想想。
顺利拿到offer~
面经 网易游戏游戏研发工程师 01 笔试这个要提下,总共三个小时的题量,而且题目都不简单,前面30题的基础题,每题一分,都不是好搞的。后面6个算法题,涉及数组灵活遍历,算法非递归实现,BNF,链表,图,布隆过滤器等。大多是写了一小问,难~(其实后面想想还是自己 对知识的灵活运用能力不足吧 )
02 一面开始做的矩阵乘法测试题,反复检查发现就只是矩阵乘法,还是自己想多了。首先自我介绍。介绍C++,C++和C的区别,出了个c++多态的例子,考的还算比较活的,但顺利做出来了。介绍TCP协议。问了epoll,epoll的特性,LT和ET的区别。问了进程的内存布局,由于都有充足准备,答的都可以。出了BFS算法和扩展问题,出了线段树的问题,最后是一个如何以最快时间找到与给定点最近的点算法,说了取整预处理思路,但数据存储会有问题,如果问题域是无限的,又如何去设计这样的数据结构来存储。问了编译器的实现。
02 二面 一上来就是四张扑克牌要算24点,当时为毛想不出= =~,后面是给算法解决。桌面均匀放点算法,最后是要求一个点在扇形中如何随机放的问题,说了按弧度和半径来随机的想法,但这样会集中在扇形顶部,说了按顶部和底部的面积来分,这样又不能处理连续的情况,而且也会出现同样的问题,最后提到连续随机密度函数的思路但没能给出最终正解。给个随机洗牌算法,如何证明洗牌是随机的。也问了编译器,叫我介绍一遍。最后问为什么没有hr面了,他说需要的话可以给我安排。。我就很自觉的滚粗了~
顺利收到offer
面经 金山西山居后台开发工程师 01 一面面试官是湖南老乡,一上来问了各种c++问题,如new,delete,malloc,free的区别, new a[5] 再delete a的编译器未定义行为及深层原因探讨 。接着问了个内存分配,说堆中有1G的内存,但内存还够用,但为什么就分配内存错误了。问了C++类的构造顺序。问了 TCP 的黏包 现象。一个是nagle算法,一个是应用层数据的包无边界问题,这是无法解决的,因为TCP管不到应用层的事,它只负责按字节流传输。问了火车运煤,拉灯的智力问题。。开玩笑带过去了。。。
02 二面是个做手游3D的总监,一上来也是问编译器,说不懂编译原理,他就说你是怎么去做的这个东西,我就说了一通,最后他说这样先实践再看理论也是不错的,说他喜欢这种搞钻研的人= =~。。。后面问到多线程需要注意的问题,问到FTP做的目的。
03 三面见到CTO陈飞舟,居然不认识他。。。首先也是一上来问了个编译器的问题,函数声明和函数定义是如何区分的,编译器怎么判别出来。后面问到我做的腾讯实习这个作业,说到并发策略那块( 多CPU核开网络中断 是需要特殊网卡,特殊平台及更高版本的linux支持)。问我有没代码积累,讲他的代码积累的习惯。问我以后想从事哪方面工作,跟我讲他在各个不同产品部门间积累代码,高效最优完成的结果。讲到选择,讲到自己认同公司的价值观。讲到游戏产业,为什么虚幻三用不起(美术的整体工业环境不行,同样的效果图,美术资源是暴雪美术的4倍)。讲到云风,讲到雷军和小米,看了下桌子上的小米3S工程机= =~。
拿到金山offer~ 这个offer真是很难割舍,几轮面试官都给人印象都很好,整个西山居环境也很是不错,自助食堂餐厅,工作间旁各种游戏机,在珠海拿着还不错的待遇过的应该很舒服。。。
在婉拒offer后,面试官还给了我一些在微信和网易游戏间如何选择的中肯意见,甚是感激。
一上来写个 aabbbccddff 化为abcdef的去重算法,想复杂了 ,其实的话只要将后面的移到前面来就行了(我是不是太弱了。。。)。接着问腾讯实习作业,磁盘的效率问题,并发的取舍,实现的UDP可靠传输效果如何, 最后考了个0(1)时间求栈中最大元素的算法。这个没想出来 ,其实考虑到栈的出栈入栈特点的话,很容易解决了。
02 二面一上来又是算法,画个不规则的多边形,现在每条边都需要一条等长的木头,给定一块足够长的木头,要以最小的体力值把这些边长木头出来(体力值等于木头的长度),其实这就是个 哈夫曼算法 。提示很多次才想到这里,还好最后算法实现比较快。接着问了linux查看内存,查看磁盘容量剩余,怎么通过ls输出目录。
03 三面问了key/value存储,有什么优缺点,什么场景下用。问了一个分布式key/value存储要如何保证映射可靠,答通过中心代理来负责映射,那缺点又是什么。接着问,如果不同的例程都要向某个key更新更大的value值,如何在不用信号量,同步锁这些的情况下保证最终value是最大的(同步, set get 循环巧妙 ) 。后面问了个海量数据中找第k大数(1.其实可以直接采用桶划分,即使是64位也最多三次遍历就可以了。2.也可以采用位滤除,但磁盘操作太多 3.k堆滤除,但k如果太大会频繁交换内存 4.分配到多机,多机同时外存排序,并有另外一台机子作多路归并)
顺利拿到了offer~
系统设计面经
![](https://i-blog.csdnimg.cn/blog_migrate/af0abc99fee50350db424c8e52bc81e3.png)
说说这次面试遇到的system design题,不想全英文,就中英文混杂了。
1。POI - geohash, kd tree 两种方法都要求。
2。Shorten URL - 单机solution,distribute system solution,cache的使用,怎么盈利,怎么避免为黄色网址服务,怎么得到实时logging metrics,etc。
3。large distributed system 怎么log 各种 data analysis 可能需要的各种query,怎么得到过去一周或一个月top 10 requests/ exceptions。
4。news feed 整个流程(twitter ,facebook类似但不一样,不一样在哪里),是用pull还是push,是为每个用户保存一个queue吗?new year时high traffic会出现哪些特殊情况,怎么解决?
5。微博上用户更改用户名,从前端都后端都需要相应做什么操作。后端数据怎么相应存储用户的微博内容。这个没有想像中那么简单。。。
6。当你更新code base里的一个读写数据的base class的implementation时,一般不会直接把新的code base直接deploy到全部instances上,问题是有新旧两种class的implementation,你工作中会怎么操作怎么deploy code?
2015腾讯校招笔试,一、二面经
![](https://i-blog.csdnimg.cn/blog_migrate/7878ca551e6b4c8f262a15bddc606562.png)
前言:自从阿里笔试都没通过,就有点担心校招连笔试都过不了。而能通过腾讯的笔试,当然是一个非常不错的机会,一定要好好把握,可惜还是错过了……唉,自从被鹅厂抛弃后,感觉找工作越来越难了。。。
废话不多说,以下笔面经:
笔试(9.20 华工 笔试岗位:移动客户端)
笔试基本流程:笔试前一天会收到笔试短信通知;带上2B铅笔(我真是逗b,就是不带铅笔,害我涂黑了两道题,也改不了,考后还担心答题卡不能被检测)到达华工的指定教学楼教室,在门外找到你的姓名,并记住座位号和简历ID;监考官发试卷和答题卡;答题,交卷......
感觉腾讯的笔试没阿里的难,阿里的太多逻辑数学题了,四十分钟20道选择题,完全没有足够的时间思考(脑子不够使呀)。还好,腾讯的笔试有几道题是比较眼熟的,做题过程中心里总算有点底,还有最后的附加题,有一道app的内存和性能优化相关的,幸好之前有看一本Android的优化技术方面的书籍,所以感觉回答得还可以。部分题目如下:(摘自:http://blog.sciencenet.cn/blog-711035-830244.html)(另外,很多道有代码的题目,不是C/C++的代码,好像是苹果的Object C或Swift语法的)
二叉树遍历:已知中序遍历顺序以及前序遍历顺序,求后序遍历顺序
SQL语句: 找出QQset中最小的QQ号码
encodeURI&URL传播的转义结果
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三(答案:6+1+1)
Windows/Linux下判断远程地址为某主机监听的某端口是都开放的命令是?
html 网站cookie
cookie功能
哈希冲突
哪些http方法对于服务端和用户是安全的
二维数组内存地址计算
(附加题)网站安全方面的...
(附加题)app的内存和性能优化相关的...(我扯了下内存出问题的原因是可能内存泄露或溢出...,然后举了几个例子;接着解决方法分别从布局优化、系统优化、代码优化,还有使用一些工具监测等方面扯了一大堆)
(附加题)定长内存池...
整体来说,笔试题还是有好些是有把握的,这得益于之前看别人的笔经和做完ctci的150道题,不过还是有很多是猜的,因为腾讯考的知识面很广,而自己很多东西学得也不是很系统,所以也没办法。
kl好像是在22号下午6点多收到面试通知的,然后我刷了下小腾的状态,还是“笔试”状态,那时也没报什么希望或失望的感觉,然后在晚上10点左右,在我看着猫眼的科技的视频,然后突然来了一条来自腾讯的信息:23号下午15:50,到林和中路海航威斯汀酒店参加面试......瞬息小窃喜了下,机会来了!
初试(23号 15:50 2012)
第一次参加面试难免紧张,2点钟就提前出发了,但是想不到公交居然在靠近林和西几个站的地方塞车了,塞了大概半个钟,那时紧张死了,不知道该不该下车搭车过去,路段有不熟悉……最后踩点到达那里签到面试,也遇见了gt他们。然后拿着面试的房间号上到20楼2012,发现里面还有人面试,外面等待了十多分钟,想着该如何自我介绍,尽量放松自己的心态,消除紧张感,感觉那时其实还好,不是特别紧张了。
面试基本内容:
递简历给面试官时,他问我是被约在几点的,然后说了前面面试的时间长了点,所以延迟了(当时就感觉这位面试官比较和善,所以之后的面试压力不是很大),然后他在我的简历上停留了好几秒种(我的简历只有一页纸,当时估计他对我的简历有点兴趣),之后叫我自我介绍;
自我介绍(我扯了下姓名、学校、专业,然后什么时候开始做项目,在项目中学到什么,平时比较关注互联网资讯技术等的,和点了下业余爱好等,不到一分多钟,简单一点就好)
然后在纸上写程序,a.给一个64位的整型和二进制特定位编号,判断该特定位是1还是0(这显然就是用位操作,用几行代码就完成了,面试官看了下没说什么);
b.找出一个字符串中只出现一次且是第一个的字符(唉,当时怎么就没问他是26个字符集呢还是所有的,显得太不专业了o(╯□╰)o……当然直接遍历然后存储各字符出现的次数返回第一个为1的即可,但效率太低了;当时首先就想了下有没有更高效率的方法,想了几分钟,没想到好的方法,算法实在是太差了o(╯□╰)o,然后直接和他扯了,然后他问我能不能优化,我就说我再想想,然后就试探性回答了其他方法……)
还问了线程进程、绘图、异常等相关的……
还有扯了下项目方面的,在聊到自定义View方面,本来想拿之前那个TimeTrack的锁屏给他看的,但弄了很久都没进入锁屏界面,当时好紧张呀,面试官都靠近过来了,居然出问题了,唉,坑爹的……然后我扯了下里面的一些绘图方面的,后来终于可以进入锁屏了,然后说了下写技术实现和产品细节方面的……
其他不记得了……
最后面试官问我想在广州深圳哪里工作?我当时就奇怪了,怎么就问这个啦,唉,可惜不是在复试的时候遇到这个面试官>_<……想不想学ios方面的,因为他们主要招ios开发的;最后问我有没有什么问题,我当时没想到什么,走的时候他说面试结果会在周三之前出来……
整个面试,虽然有很多回答得不是很好,但面试官实在太nice了,没回答好的也没说什么。所以说面试有好运也是挺不错的,但如果实力真的很强,对运气的依赖就不会很高,可惜我只是个菜鸟o(╯□╰)o,记得网上的一位牛人面经上说过:面试 = 运气(50-n)% + 实力(50+n)%,至于n,我想说n的意思n = f(x),x即实力,n与x成正比关系,这就意味着,你实力越强,对运气的依赖性越低
当天晚上回去的时候就开始不断刷小腾的状态,看讨论区,有些人好快就收到通知了,当时我就担心过不了,几乎每半个钟就刷一次,但状态还是“初试”,持续到第二天下午,然后整天都没心情看书了。后来,kl收到复试通知了,大神就是快!我的还是“初试”,感觉没戏了。然后晚上10点多准备投多益的简历,突然邮件来了:25号下午2:00参加复试,欣喜了一下。希望还是要有的,万一哪个时刻突然来了呢?
复试(25号 14:00 1313)
复试前天晚上就和kl一直讨论该怎样准备,然后问了师姐,我当晚就准备了下项目方面的,其他知识点却没怎么看了。
这次搭地铁过去,弄得时间还是有点紧,kl在等候厅等hr面了。等了十多分钟,拿了房间号上到1313,在外面也等了十多分钟,然后进去,面试官微胖,说话风格像足了弄技术出身的。递交简历给他,他说已经有了,然后又做了一次简短的自我介绍,这次可以看得出面试官对我的简历不怎么感冒了,而且脸色显然不是很好。
面试内容:
写出一次快排后的具体变化情况(当时没听清楚,以为要写快排程序,然后写着写着,他说不是,表情就有点不爽了,说举例分析出一次快排的变化即可)
写出并分析Android的activity的生命周期(然后当时居然不记得了,这是Android的基本内容,只写了生命周期的四个方法,简单分析什么时候调用,然后他很鄙视地说还差很多呢,分析得又不够详细呀)
android的布局页面为什么一定要用activity,直接用view不行吗?(mb,我怎么知道,Google就是这样设置的呀……扯了下是为了统一开发的模式,view要用activity承载才行,他说不是不是,然后说了什么不记得了,mbd,那你又不告诉我,当时真想问他,但又不敢问,……我应该往Android的其他组件扯一下的,但被他搞得太紧张了,都不懂得将他的问题转移到自己懂的区域上了)
然后问了下项目,打算讲那个app比赛的,然后说到服务器端,用ksoap连接webservice,他就打断了,不是自己写的连接方法的吗?我们都不用第三方的,自己开发,有没有熟悉其他网络编程的,如tcp、http等,还有你移动端的说道服务器那边干嘛……坑爹,这个没注意到了。被他这样一说,又忘记转移到自己懂的知识点了,其实可以说下Android的网络开发框架volley,Async-Http等的
见刚才那个项目没什么好讲了,又扯了下自定义view, 于是又发生了初面的尴尬,唉……给他看了下绘图的一些,感觉没什么好讲了,然后他冒出了一句,那就是比较熟悉页面布局方面的咯,不过这个不是很简单的么。。。md,没戏了>_<,之后也什么都问了,我问他什么时候会有结果,他说今晚或明晚
哦,还有tcp的,其他不记得了……
面完之后就感觉很大可能没戏了,回到等候厅和kl扯了下,刷了下状态,聊了下面经,如何巧妙回答面试官的提问之类的,然后一两个钟后,边聊变刷状态,发现已变成“未通过该次面试”,唉,只能叹息了……最后,kl差不多5点40多去hr面,回来后说了下状况,不过听他说的二面情况,感觉他已经表现很好了,有很大几率拿到offer,果不其然,今天(28号)他收到offer的通知了,祝贺他!:)
唉,一下子扯了那么多废话,个中辛酸也只有自己知道,总结一番,当做回忆和经验吧。
给几点可能有用的建议参考下吧:
简历:如果有技术博客的可以写上,csdn、博客园、github等,不过上面要有料;简历上每个点都要突出与你的职位有关,而且都能自圆其说,不要有任何多余的地方;侧重的内容放在前面;
整体性针对性去准备面试的岗位相关的技术,和面试官聊的时候,不要显得你学的技术都是皮毛的,如果他这样认为,可以将话题转移到一些看似高大上的技术(但自己要把握住,能圆场),让他感觉你不是停留在皮毛技术上;
还有,就是面试时,如果是问到你不擅长的内容,可以将话题引申到你擅长的知识,让面试官觉得你还是有点料的……(这个是技巧活)!
最后,梦想还是要有的,说不定哪天就实现了呢? 好好加油吧!祝大家,校招都能如愿找到份好工作!