来说说我暑期找实习的事儿吧(搜狗、百度、网易等公司电面面经)
最近,各大IT公司开始一年一度的校招活动。在昨天,跟百度地图的HR通了电话以后,我去百度地图部门实习的事儿应该定了。每年找实习找工作都是头疼的事儿,玩的是心理战。于此,我整理了一下我的求职经历,希望能够给正在求职路上的同仁们一点帮助。
先后经历了搜狗,百度,网易,易保,星环等公司等面试,共计14次。其中,电话面试11次,现场面试3次。
搜狗数据挖掘部门电话面试1次。
百度面试9次,包括商业基础部门4次,3次工程部,1次策略部;百度地图部门4次,历时最长;百度前端(校招)1次。
网易新闻媒体部门JAVA方向1次。
无锡易保网络有限公司现场面试1次。
上海星环科技公司现场面试2次。
8月4日
在基本结束了实验室的工作内容之后,我开始我的找实习之路。8月4日,首先接到的是北京搜狗公司的面试电话,面试官说他们部门做的是数据挖掘方向的。一听跟算法有关,当时我脑子就一黑。我平时做的内容偏实验操作,自己做的比较多的也是工程项目。对算法这个东西,感觉没搞过ACM的人,不敢随意乱投啊。跟面试官约了第二天的时间,就赶紧去看数据挖掘方面的资料,找GC师兄问一下数据挖掘方向常考的问题。师兄说:“一是要掌握基本的数据挖掘算法,二是常见的分类算法,降维算法,聚类算法。PSA,SVD,逻辑回归,随机森林,朴素贝叶斯,SVM,Adaboost,Gbdt。深度学习也最好了解一下。”
8月5日下午3点
面试官准时给我打来电话。主要的流程和面试问题归纳如下:
第一段:基本算法,例如排序算法,快速排序的过程和时间复杂度,堆排序的建堆过程;
第二段:数据挖掘的基本算法,说一个你最熟悉的数据挖掘算法,例如聚类算法,
第三段:围绕公司中遇到的实际问题,说一下你的看法。我觉得这样的题目实际上是看你的逻辑思维能力是否缜密,说话是否有条理。具体问题如下:
(1)我部门的搜索业务需要用到模糊词检索,比如说输入一个字符串“ABD",系统认为你其实想搜索的是“ABC”。请问,实现该怎样实现模糊词检索,从数据结构、算法、评价三个方面讲述;
(2)爬虫算法,例如我现在登录大众点评,请帮我把所有有关店铺的链接都爬出来;
(3)在我爬到的结果中,有些结果描述的其实是一个东西,请帮我把找出来。
这三个问题,除了第三个,我稍微有点思路。前两个问题都没答上来。面试官在第(2)个问题给我的解答是:你在爬URL的时候,提取URL字串里面的关键字就行了,一般的商铺都是用shop来标注的。第(3)个问题,面试官说其实很好弄,大部分描述既然说的都是同一个东西,你只要去检索描述不一样的东西就行了。我还是没懂,或许是我忘了吧。
第一次电话面试,应该是跪了。虽然面试官说,三天内会给我消息。如果不要你,这话你就当客套话一听算了。可怜我也单纯,真的等了三天。期间又接到搜狗前台的面试官预约我,说让我9月份去了北京再找他现场面试。
8月6日下午2点
收到北京智乐科技公司的面试邀请。HR说先让我做一份卷子,一个小时的时间。这张卷子,应该不难,考察的东西都很基础。我也才开始准备找实习,有关的知识还没开始看起来,也没做题训练。所以,这张卷子也只做了两个题。交了上去也就石沉大海了。
8月6日晚
我坐上了回无锡的火车,全力以赴准备实习的事情。同时,手上还有项目需要做。没事,边做边准备吧。加油!
8月7日早
到达无锡。一回到家,就在网上海投简历,从BAT到本地的不知名小公司(当然,这些公司都会在网上写的特别好,说自己是国际大牌,世界仅有怎样怎样这类)。
8月8日
无事,感冒过后,左侧鼻孔还是鼻塞。看书复习,上牛客网开始刷剑指offer的题。
8月9日
继续刷题,做项目
8月10日
上午跟在百度做产品的同***系了一下上次内推到百度系统部门的事儿,结果他给我说内推跪了。直接跪在简历筛选上,连个面试的机会都木有(我顿时哭晕在厕所里)。悻悻之余赶紧联系在百度的学姐,让帮忙内推商业基础部门。
下午3点,收到百度地图HR的面试通知,说让我把简历给她发过去。我查了一下我在大街网上的投递情况,原来真投过百度地图方向。兴奋之余赶紧把简历给她发了过去。这个HR的资料我也查了一下,跟我差不多,应该也是实习生吧O(∩_∩)O~简历发去之后,我还再问了一下面试的具体时间,她说会另行通知。
8月11日 下午2点左右
接到无锡市易保公司的电话,通知我第二天去公司面试。我在网上查了一下,该公司的主要业务是给各大保险公司做电子业务的。发来的邮件都是英语的,看来应该是个国际化大公司。于是,拿起《程序员面试宝典》看了一下。这本书其实写得很基础,应该说是一本找工作入门级别的书。很多问题是纯粹的概念性问题,都可以在各种教科书或者网上找到。
8月12日
吃过午饭,我便坐车屁颠屁颠去了无锡新区。这个易保公司也是够远的,我坐车坐了足足2个多小时才到。要是到了这个公司,我可得叫我父母给我买辆车,**天天2小时折腾,累死宝宝了。
到了公司后,找到保安(竟然是保安)给了我一份卷子,然后就去隔壁会议室里做了一个小时。我看了一下整个卷子的题量——先做一份调查问卷(你为啥来公司)、逻辑思维题10个、英文阅读理解一个大题。**。。这哪是一个小时能做完的。我果断放弃调查问卷(这个到时候HR直接问我就行了),先做逻辑思维题,然后再做英文阅读。虽然说一个小时后交卷,我做了一个半小时,只把逻辑题做了。这时HR来了,说要收卷子,我
就问调查问卷也要吗?HR说要的,我说还有阅读没做完,她说就再给我半小时做阅读。于是,就又饶到半小时做阅读理解,HR拿了我的逻辑思维题卷子去旁边批阅。
半小时后,又把阅读理解交了。这时进来一个女面试官(这个公司妹纸好多),让我先自我介绍一下,问了一下我的求职意愿。然后她说部门里面还有两个职位要实习生,一个是需求分析,还有一个是测试。我感觉这两个岗位都跟我的初衷相差很大。于是,我说考虑到我将来还要写毕业设计论文,如果做些没技术含量的工作我没法跟我导师交待。面试官听后便没在说啥,就出去了。
大概又过了半个小时,进来了另一个HR。她一进门就给我道歉,说技术岗位已经招满了,所以可能要委屈我做需求或者测试。我又把我的理由说了一遍(哥也是有追求的人)。HR也说实在不好意思,最后一个技术岗在我来的前一天就有人做了。我也觉得不巧。考虑到这个公司在无锡,我将来回无锡的时候,仍可过来发展。我就和这个HR再多聊了几句,说下次有机会可以再次合作。
最后,就出去坐两小时的车了。
这次面试的最大感受是,虽然没有直接参与技术面试。但是做了一套逻辑题也是很充实的(我后来偷看到我那张卷子做了50分,满分100分,对了5个题),特别是最后一题,很有意思。下次有机会把这个题整理出来。大公司的逻辑推理题一般都是有章法可循的,特别是那些真真假假。虽然第一眼看着难懂,但是稍加分析应该就能做出来。
8月13日
跟高中同学出去浪了一下。第一次玩密室逃脱,三个人竟然卡在了第二关。150大洋权当交学费。下午5时,收到百度商业基础平台部门的面试官的电话,预约明天下午2点开始面试。实习之战真正开始。
8月14日
下午2点,百度商业基础平台的面试官准时打来电话,我也做好了准备开始面试。是个面试官,声音比较细,我猜应该是个小鲜肉的那种(哈哈)。
这次面试的问题大多比较基础,具体概括如下:
(1)简单介绍一下自己的情况,实习时间等;
(2)请说一下打开www.baidu.com这个网站,所有过程;
(3)socket通信过程,accept()函数是什么;
(4)锁是什么,死锁是什么一回事;
(5)不使用数学函数开方运算的情况下,求解开方运算;
(6)epoll,select听说过吗
(7)说一下C++中,虚函数和纯虚函数的区别是什么?
(7)你有什么问题?
解答如下:
(2)这个问题能大能小。我当时说的是浏览器中输入www.baidu.com之后,会先进行域名解析,从本地DNS开始找,如果没有的话,在向上层提交这个请求。直到找到对应的IP地址。服务器收到请求后,会解析这个请求,看是POST还是GET,并根据不同的方法返回结果。
实际上这个问题,在网上的解答很多,例如还涉及到本地浏览器缓存加载等等问题。这一个问题,主要考察网络知识,HTTP,甚至还有TCP三次握手的建立过程等等。可以结合这个题,对整个访问网站的流程再过一遍。加深印象。
(3)写过socket通信的人肯定都会回答这个问题,socket涉及到客户端和服务器。客户端哪些函数,服务器端哪些函数,基本都清楚。accept()函数是服务器端接收连接请求
(4)锁是进程间访问数据的一种控制机制。对数据上锁,保护数据,防止写与读的混乱。(这是我自己组织的语言)。死锁就是一个循环。死锁形成需要四大要素,直接查概念就行。
(5)这个题我当时不会。现在想来其实非常简单,二分查找就可以了。
(6)epoll,select这个我没听说。后来查了一下资料,是有关IO阻塞与非阻塞的。IO这个方面很有意思。以后一定好好研究一下。
(7)纯虚函数没有函数体。虚函数有函数体,能够在继承的时候,被子类覆盖。
(8)这个问题其实是面试官留机会给面试者。我当时问的是,是否还有下轮面试,在什么时候?(所幸的是,面试官直接肯定的告诉我还有下次面试。。。而且告诉我面试的时候别紧张)
整个面试过程持续了大概半个小时左右,偏重考察基础。一般一面都是这样。
。期间又有一个来自北京的电话打过来(我猜很可能是百度地图的面试,后来果然是)。于是我又给这个面试官打电话过去,一听声音比较粗,应该是个大叔类型。面试问题总结如下:
(1)你的实习时间多久,能保证吗,人在哪?
(2)你擅长什么语言?你得告诉我你擅长什么我才能问?
(3)说说你做的项目吧?
(4)进程和线程的区别是什么?
(5)听说你了解操作系统,来说说linux系统启动后内存分配是咋样的吧?
(6)说说操作系统中,堆和栈的区别是什么?
(7)听说你懂C,来说一下memcpy的缺陷是啥?
解答如下:
(3)说项目的时候,这个面试官说了一下这项目中的问题
(4)操作系统中有,进程是系统调度和资源分配的基本单位(这是教科书般的回答,面试官一般不喜欢),线程是CPU调度的基本单位。最好结合你实际使用去回答。说一下这两者的区别。
(5)这个问题不会。
(6)操作系统中,堆是由程序员自己分配和管理的,栈是由系统分配的,通常用于函数中。
(7)这个问题我当时没回答上来。后来查了资料,知道memcpy的缺陷在于,复制过程中,有可能因为字符串过长,目标地址正好指向源地址字符串的某个位置上,那么当复制到这个位置上的字符时,会造成数据修改,也就是此时的数据已经不是原来的那个数据了。
整个面试过程大概也是半个小时。但面试下来,个人感觉结果不太理想。但是想到百度商业部门面的还好,而且还有二面。心里还是很开心的O(∩_∩)O~
8月15日
无事,继续复习,做项目
8月16日
无事,继续复习,做项目
8月17日
早上11点,收到商业基础部门的百度工程师(女)的电话,预约我周三下午2点进行第二次面试。我一定是女程序员,感觉不太好应付,一般二面的话,都是技术总监那类人物,女程序员基本跟女班主任差不多。哎,不管了,好好复习。
8月18日
无事,继续复习,在牛客网上刷《剑指offer》的题目。看看《编程珠玑》。
8月19日
下午2点,准时接到百度工程师(女)的电话,主要问题围绕的是我大学做过的项目。
(1)你先简单介绍一下自己?
(2)来讲讲你大学里做的项目吧,就具体某一个好了。
(3)算法题,有一个有序数列,从中间某个位置截成两段,将后面一段拼到前面去,找出最大数?
解答:
(2)与面试官交流项目的时候,面试官虽然不懂你的项目具体做什么,但是对你怎样分析问题和解决问题的能力非常看重。经过这次面试,我最大的感受就是:原来我虽然做过一些项目,但是我都不知道我在干啥。面试官会围绕你说的话不断提问题。比如说,你说一个你在项目中用到的数据结构,她就会问你为什么要用这样的数据结构,有什么好处。又或者你说一种做法,她就会问你为什么这样做,这样做的意义是什么。总之,以后做项目有想想为什么,为什么这么做,这样做的意义是什么,为什么不用另一个东西做而要用这个东西做。
(3)这个算法题其实很简单(但当时我还是没做出来)。借鉴二分查找的思想。首先取中间数,再取中间左边一个数和右边一个数,如果这个中间数比左右两边都大,那么它就是最大数;否则,如果左边数<中间数<右边数,那么取右边的那段序列,重复二分查找再取中间数;如果左边数>中间数>右边数,那么取左边那段序列,重复二分查找取中间数。
整个面试过程持续了近50分钟。后来这个面试官需要去开会就结束了面试。感觉面的不是很理想,没想到在问到自己做的项目上会遇到这么多问题。我想起做项目的时候,都是师兄们告诉你怎么去做或者用什么方法去做就行了。自己却没有弄懂所以然来。以后,在项目这块还要加强锻炼,多做笔记,多做思考。
下午5点多,收到网易新闻传媒部门的面试电话,约好明天下午3点进行面试,主要语言是JAVA。我一听是Java就懵逼了。虽然手头上做的项目跟java有点关系。但是对java这门语言也就是会使用这样的级别。面试官说问的问题不难,就一些基础。
8月20日
今天没有收到百度的面试电话,我就和帮我内推的学姐问了一下昨天的面试情况。学姐说那个面试官是一个主管,如果我去了他们部门,很可能是她来带我。学姐还说结果不可能那么快就出来,让我耐心等待。再问问三面是否是技术面,学姐说是,没有HR面的。
下午4点多的时候,收到百度地图HR的电话,HR问我是否收到面试电话。我说收到了。她又问几个。我说目前就一个电话,后续没电话了,我以为被刷掉了。百度HR说他们那儿可能没有和面试官沟通协调好,让我继续准备,下周二继续安排面试。又是一个振奋人心的消息啊!
下午3点准时收到网易的电话面试,内容主要跟Java有关:
(1)简单自我介绍,说说自己做的项目
(2)说一下Java中的继承,类,接口
(3)说一下Java的垃圾回收机制
(4)说一个你最了解的算法,算法过程和算法复杂度
(5)说一下Java中同步的问题, synchronized的用法
(6)SSH框架中,请说一下Spring的注解是怎么实现的?
(7)hashcode的作用是什么?
(8)请说一下java中的一些常用函数。
解答:
(2)Java中支持单继承,这是和C++最大不同的地方。所以Java中鼓励使用接口。这样做的好处在于,把接口暴露给调用接口的人,而使用接口的人不需要知道接口具体怎样实现。达到分层解耦的目的。
(3)Java中的垃圾回收主要分为三层,年轻层,年老层和永久层。年轻层和年老层分别使用不同的垃圾回收算法。详情百度。
(4)我当时说了快排。这是一个使用非常广泛的排序算法。过程略。平均时间复杂度是nlogn,最差的n平方。
(5)这个我不太清楚。复习的时候,对用synchronized修饰的对象,相当于是上锁,只有获取该对象的进程,才能执行后续操作。具体的还是请教Java大牛吧。
(6)Spring的注解。。。略,详情百度吧。
(7)
感觉网易的面试内容面的都很基础,只是我不太擅长这个。当然我在电话中,还是很积极地说,如果我能去贵公司的话,我一定会在这方面好好努力这类话云云。通过这次面试总结一下,在Java中,有些是必问的,比如内存分配,垃圾回收等。建议做Java方向的同学,好好研究JVM。面试官很喜欢问。
晚上收到百度商业基础平台的三面的电话通知。说让我明天准备一台能够联网的电脑,需要在线写代码。
8月21日
下午3点,准时接到三面面试官的电话。三面的面试官一般都是总监或者经理级别的任务。话不多说,开搞:
(1)你对网络了解?那你说一下HTTP是有状态的还是无状态的?为什么?
(2)你对MySQL了解吧,那你说说怎么样提高数据库的搜索效率?
(3)进程间通信有哪几种方式?(我说了管道、共享内存、信号量等)说一下管道的原理是什么?线程的通信方式是什么?
(4)给你一个数学表达式,例如1*2+3/4,请说一下你怎么进行处理来得到计算结果?
(5)编程题:数字转字符串输出
解答:
(1)HTTP是无状态的协议。什么是无状态和有状态。这个可以在网络的相关概念中找到。有状态是指下次传输能够“记住”这次传输的能力。而HTTP每次传输都得重新建立链接。
(2)这个问题当时不会。后来细细想了一下,感觉应该是跟投影和选择操作有关。我记得课本上有棵树。将选择优先操作,接着做投影操作。这个题,还是不太明白。(望大牛指教)
(3)我和面试官在这个问题上十分纠结。首先,说到管道,就是一个进程的输出作为另一个进程的输入。面试官又问,为什么这样做呢?这样做有什么好处?我当时回答的是防止第三个进行对输出数据进行篡改。面试官不太满意。我后来在网上查了一下,网上大部分对管道的解释也是很表面,就说管道其实是一个文件,输出进程和输入进程都是对同一个文件进行操作,保证操作连续性。后来面试官还问了共享内存的原理是什么?就是进程与进程间访问同一块内存。详情可以百度一下。最后好像还问到了锁的问题,不同的锁机制是不一样的。还有关于共享打印机的问题。这些问题我回答的时候比较混乱。也忘了当时说了些什么了。
(4)逆波兰式?
(5)这个问题很好解决。网上都有现成的代码。面试官出这样简单的问题,我觉得对我是放弃治疗了吧。前面回答的都太乱了。没想到面试官问的问题都是自己疏漏的。简历上写到自己会啥,结果一问全部不会。
总结:
这次面试对我来说打击还是挺大的。说明我平时复习的时候,往往只注重概念,却不挖掘原理,对知识点也没做到融汇贯通。有些东西,真的不是突击能来的。在此劝正在找工作的同学一定要注重平时的积累。有些东西,行家一问你就知道几斤几两。
8月22日
学姐告诉我昨天的面试面跪了。他们部门的leader感觉我基础不是很好。唉,好好准备下周二的百度地图面试吧。
跪了一个之后,还得想办法找新的公司投简历。找了妹纸帮忙投美团,小米等公司。妹纸还建议我不要投实习,直接投校招。到时候再跟面试官坦白,说是来实习的。感觉这个是个大坑啊。(找实习的同学千万别这么做)
8月23日
无事,准备面试
8月24日
在自己学校的BBS上逛,发现上海有个叫星环科技的公司招实习生,二话不说立马投简历。刚投完HR就来电话说是否方便面试。我说可以去上海面试。然后HR就安排明天来面试,还问我对分布式数据库有了解。我说没做过。她说不要紧的,会有人带的。我听了以后,心安了。
8月25日
上午10点,百度地图的面试官准时打来电话,一听感觉是个年轻小伙。问题如下:
(1)自我介绍,能实习多长时间;
(2)说一下自己擅长的语言;
(3)说一下C语言中,内存分配的方式,比如说变量存在哪里?
(4)进程和线程的区别?
(5)说一下数据结构中,栈的实现方式?队列的实现方式?
(6)说一下你了解的排序算法?(我说了冒泡,选择,插入,快排)说一下冒泡排序的过程
(7)你的学习方法是怎么样的?是否做过IOS的开发?
解答:
(3)C语言中,内存分配方式,从低地址到高地址依次是正文段,初始化数据段,未初始化数据段,堆……。从高地址开始命令行参数,栈段。
(4)这个问题略。
(5)回答这个问题,首先要知道栈的数据结构,很多人都知道栈是先进后出的数据结构。但是不知道具体怎样实现的。就比如说你需要知道栈定义的结构体是怎样,然后才好说操作是怎样的。我主要说了一下pop和push的操作。队列的问题也是一样去回答,入队和出队操作是怎样的。
(6)冒泡排序是比较相邻的元素。小数上浮,大数下沉,每次能够确定一个最大数的位置。
(7)我说喜欢一边做项目一边学习,只有通过实践,才能更好地理解和掌握知识。(个人发挥)
这个面试结束之后,面试官还是挺满意的,他觉得我基础还不错,但又说有些难的问题就不问我了(/(ㄒoㄒ)/~~看不起我)。他说再过十几分钟会马上有另一个面试官跟我联系。让我做好准备
约11点的时候,百度地图三面开始,问题如下:
(1)来说说C和C++在函数上的区别
(2)知道C里面有extern这个关键字吧,说一下他的用法?他和include有什么区别,用哪个更好?
(3)忘了
解答:
(1)这个问题不会,详情百度吧
(2)extern用于定义一个变量,让他能够在其他的文件中被使用。比如你定义 extern int
c,那么这个c变量就能够在其他的.c文件中使用。include是直接引入一个文件,凡是这个文件中定义的变量都能使用。我个人更喜欢include,因为使用extern有问题,万一那个变量没有用extern定义怎么办(这段话纯属我胡说,看官看了笑一下就好,我当时就这么回答的
>_<~~)
三面只面了十几分钟,估计是跪了。面试官建议我回学校多做项目,提高姿势水平。唉,估计没戏了。
下午1点多,准时坐上去上海的高铁。高铁上一直没睡着,鼻塞,一直从上次感冒好了以后还是鼻塞,我担心可能长鼻息肉了。难受。到了上海以后,折腾了1个多小时到达“无人区”(科技园什么的一般都建在比较荒的地方)。几番问路之后,终于找到了公司——就一个楼层的一半地盘。进去之后,就是厨房,整个布局不像大公司里那样中规中矩,连过道都是弯的。看来是个很有想法的公司呀。
HR是个漂亮妹纸,让我在会议室稍坐片刻之后,就有面试官来找我了。是一个年轻人,估计也是大学毕业之后不久,说话语速特别快。他坐下来以后,就看着我的简历,圈一个点问一个点,每次问都是你对什么知道不,了解多少。整个面试过程也就十几分钟。
十几分钟后,HR进来给我说,希望我去做POC。卧槽,这名字听着高大上,我仔细问了一下具体工作内容是什么。HR说就是去客户那儿上门安装软件,测试什么的。我一听,这跟我想做的开发还是相差挺远的。于是,我又搬出上次的台词,说这样的话,我没法应对我的毕业设计云云。她也看出来我并不想做这样的工作,于是就给我安排了另一个面试官。
二面的面试官比一面更加成熟一些,说话也更加犀利。问的问题更加刁钻,甚至让我徒手把pthread_create()的函数(Linux环境中的一个创建线程函数)原型写出来。还让我写mysql的查询语句。面完之后,面试官觉得我还是too
young,too
simple。HR姐姐人很nice,还跑出来做好人,安慰我说明天会发一份邮件给我,告诉我面试结果如何。这次上海的面试真是啪啪打脸,让我认清自己还是太easy了/(ㄒoㄒ)/~~。
结束了在上海的面试,就去和上海的同学聚会去了。感谢乐姐在精神上给我的鼓励,还请我吃饭^_^。
至此,我的实习面试环节基本结束了。所有投递的简历,能够电面的都已经电面。感觉算是松了一口气,暂时歇歇。回去以后,找了母后说明天想去医院看看鼻子,而且明天就是回学校的日子了。
8月26日
上午去市第三人民医院看病,挂了耳鼻喉科。见了医生后,医生说先去拍个CT吧。CT结果出来后,医生看了下就说这是鼻窦炎加鼻息肉,得手术治疗。回去和家人商量一下,确定要不要手术。于是,我只能把当天去学校的车票退了。
下午3点左右,收到百度前端(校招)的面试官电话,说要给我进行面试。面试内容大致如下(主要是算法题):
(1)有这样一个序列,先增后减,从这个序列中找出最大数?
(2)有一个无序数组,从中找出第K大的数?
(3)在一个二叉树中,找出两个子节点的第一个公共父节点?
解答:
(1)这个问题同上次百度商业部二面的问题一样,同样是二分查找,略。
(2)这个问题我首先想到的一个是《编程珠玑》上的一个方法。如果这个问题对空间没有限制,那么可以申请与原来数组一样大小的数组空间,这个数组空间是有序的,比如说从1到n。然后遍历一遍那个无序的数组,将数字填写到对应位置中去。例如,3填写到3位置,5填写到5位置。那么整个遍历过程是O(n)时间,而且我相当于把失序的数组再排序了一遍。找到第K大元素只要O(1)时间就行了,所以复杂度是O(n)。面试官听了以后,感觉可以。但是又不是他想要的答案,他说你听说过快排没有?我说听说过,他说你可以从这个里面借鉴一下。这个方法百度一下就有,此处略。
(3)这个问题本质上是找出两个链表中的第一个不同元素。首先,用树的遍历找出含有这两个子节点的两条路径。两条路径其实两个链表。然后,找出第一个不同的元素即可。这个元素前面的元素就是相同的元素,也就是第一个公共父节点。
8月27日
下午5点左右,收到百度商业基础平台策略组的面试电话。收到电话时候我很惊讶,因为上次学姐给我说已经被他们拒绝了。面试问题:
(1)说一下HTTP的两种方法?有什么区别?
(2)说一下Session和Cookie的区别?现在主流的服务器使用的是哪个?
(3)说一下PHP与C语言的区别?你为什么更喜欢用PHP语言?
(4)说一个你最了解的算法(我说了快速排序),时间复杂度,最差的时间复杂度,为什么?
解答:
(1)get和post方法。两者的区别就是地址栏里,利用get获得的参数会显示在地址栏,post则不会。post传输的数据量更加大一些。后来面试官出了一个题目,大概意思是说地址栏中的参数值是1,而表单里面的参数值是2,分别用get和post提交,提交后的参数值是多少?我当时懵逼了。。面试官感觉到我的懵逼。。就说这个问题太偏了,不会用到。就换了下一个问题。
(2)Session是将用户提交的信息存储在服务器上。Cookie是将用户的信息存储在本地。第二个问题我不太清楚。面试官说,现在流行用Cookie,因为使用Session的话对服务器的开销很大。
(3)PHP有点像Shell。属于弱类型语言,定义变量的时候,只要用美元$符号即可。C语言是强类型语言,必须明确定义变量的类型。我更喜欢用PHP,很方便。
(4)快排。过程略。平均时间复杂度是nlogn,最差是n的平方。(《编程珠玑》上有一章讲快排的,讲的很详细)因为最差的情况是,快排退化为冒泡排序。
8月28日
住院
8月29日
住院,无事,看书
8月30日
住院,无事,看书
8月31日
上午11点,我被推入手术房。全身麻醉。护身一边给我注射麻醉剂,一边给我吸入什么气体。总之,就几秒的时间,我就觉得黑了。再次醒来,手术已经做完。太快了,我连梦都没有做。护士问我,你在哪里?我说在地球上。护士又问我,你在哪里?我说在医院里。还好意识清醒的。后来,我爸告诉我这个手术做了40分钟。
手术完后,我就被推入病房观察了,身上插满了各种贴,旁边还有个显示心电图的仪器。嘴巴上戴着那种专用的呼吸罩。
下午1点,我的手机响了。我爸看了一下电话,是北京的号码。我让我爸快接。我爸接了电话。好像是百度地图的HR来的。说让我准备一下最后的面试,前面的两轮面试都通过了。(听到这个消息,我都想跪着哭了。。。),最后一轮面试就是再看一下,确认一下一些东西。面试时间安排在周三下午。(后来,试试证明这是一个非常正确的决定)
9月1日
头疼欲裂,鼻子里塞满了止血棉。整个脑袋胀得厉害,夜不能寐
9月2日
上午9点,医生帮我把鼻子内的止血棉取出来,瞬间血流不止。但不久便不流了。
下午2点半,百度地图第四轮面试开始,面试官应该是对我前面的表现比较满意,所以没有再问技术上的问题,问了如下:
(1)自我介绍
(2)能否接受加班?
(3)什么时候入职?
(4)遇到问题,如何去解决的?
解答:
(4)针对这样的问题,我分成两种,一种是独立开发时候遇到的问题,还有一种和小伙伴一起开发时遇到问题。前者,独立开发遇到问题,首先分析一下问题的原因,以及这个问题涉及到哪些方面的知识点,然后去查找资料;后者,在开发过程中遇到问题之后,先一起讨论,然后分头寻找解决办法,然后再坐在一起讨论,确定选用哪种方法来解决问题。(笔者表示整不出高大上的答案来,就这么凑活吧)
整个面试过程非常和谐。除了入职时间没有谈妥以外,其他问题都OK。面试官希望我尽快入职,而我由于身体原因希望能够十一之后入职。(不知道会不会因为这个原因挂了)
9月3日至5日 无事,住院,挂盐水
9月6日
下午6点,百度地图的HR给我说恭喜我通过了所有的面试。但希望我9月16日入职。我一听这时间有点早,跟她说能不能延后一些,最好是十一之后。然后她说她会和面试官商量,周五前给我答复。
9月7日
无事,无音讯
9月8日
无事,无音讯
9月9日
无事,无音讯
9月10日
按捺不住的我,还是给HR拨通了电话。
我:”您好,HR,我是×××,关于我延期入职的事情怎样?“
HR:”这边还是希望你能尽快过来。没事儿的,百度还是有很多机会的。“
我一听这话,感觉是不要我了。我立马说:“16日入职没问题。我昨天去医院检查了,医生说只要入职前再检查一次就行。”
HR:“16日入职已经不行了。这样吧,我帮你安排23日入职。”
我:“好的,谢谢您!”
HR:“那你要保重好自己身体噢!”
我:“嗯嗯,谢谢!”
9月11日
无事,无音讯
9月12日
无事,无音讯
9月13日
无事,无音讯
9月14日
无事,无音讯。傍晚的时候,我给HR打了个电话,问了一下工作地点在哪儿,这样我方便订旅馆。HR说会发邮件给我。
9月15日
无事,无音讯
9月16日
无事,无音讯。我给HR打电话,再次确认工作地点,HR说明天发邮件给我,offer里有具体的事项。
9月17日
下午,收到百度地图的实习offer。
找实习的总结:
(1)起初简历上写的东西很多,比如说自己会这个,自己会那个。为的是表现出自己是个全才。后来才发现完全是给自己挖坑。后来的面试,我直接跟面试官说我对C比较熟悉,对计算机的操作系统和网络比较懂。像简历上写的了解Java,熟悉MySQL的基本操作这些我根本就不在面试里提了。提了就是给自己挖坑。
(2)从一开始对算法题的束手无策,到后来也能尝试着说一下自己的想法。这中间也是有个过程的。我在牛客网上每天刷《剑指offer》的题目,原书我也买了。不会做,就看书。看完了就写代码。我也看了《编程珠玑》,这本书前面几章的内容还是很有用的。后面的内容基本看不懂。所以说,算法题只要见多识广,多练习,应对一般大公司的面试不难。
(3)面试的时候,照着书背诵概念是不行的。我回答问题的时候,喜欢加一句“平时使用过程中”“或者是我的使用经验”“我经常怎么怎么用”这种话。这样的话,面试官觉得你还是用过的。
(4)说一下我看的几本书吧:
《剑指offer》这本书必看,因为里面有很多关于算法题的巧妙解法,属于初级书级。看完基本一面没问题。
《程序员面试宝典》:这本书都是一些概念问题,而且内容较杂。我就浏览了一下。把没记住的概念再看了一下。
《Unix高级编程》:说自己知道操作系统的童鞋,这本书必看!
《C primer
plus》:这本书不建议找工作前看。这本书属于C语言的入门书籍,可以作为字典看,有什么知识点,难点忘了可以在这本书上好好看看。
《啊哈,算法!》:算法的入门小白书。
《计算机网络》:搞网络的必看,但这本书说的知识比较多,比较笼统。我妹纸建议要搞计算机网络的话,《HTTP权威指南》那本书必看。
最后,感谢我的母亲,在暑假的那段时间每天陪我一直到12点,每次面试后都给我安慰和鼓励;感谢我的女友,在我找实习期间,不断给我好的面试建议和复习计划,帮我内推各种公司;感谢百度的两位学姐,帮助我内推百度商业基础平台;感谢师兄,为我提供了搜狗的内推面试机会;感谢森哥,为我提供了网易的内推面试机会;感谢乐姐,在我最低迷的时候,给我精神的支持和鼓励;感谢所有在我找实习期间帮助和关心过我的人。感谢一路有你!~
全剧终……祝大家早日拿到心仪的Offer!God bless you!~~O(∩_∩)O~