二面的时间是定在12点的,可是两点还有考试,所以当时大厅只剩下我一个人的时候,我有意识的向工作人员说明了一下情况,腾讯的工作人员也非常的友好,说已经帮问过了面试官,会马上进行面试的(其实他是放下吃午饭的时间,先进行面试的,想想也是好辛苦)
这里我也简单的介绍一下我记得比较清楚的几个问题吧:
1、 给你任意一棵二叉树,求树中距离最远的两个节点。
与一面一样,一上来也是算法,就努力使自己冷静下来,拿起笔就开始画。脑子里一开始出现的想法就说可以遍历得到左子树和右子树距离根节点最远距离点,和就为相隔最远距离;这样显然存在问题,他指出了最远点不会有可能是在左子树或者右子树吗?自己反应过来后就马上开始重新计算,既然每个节点都有可能是存在最远距离树的根节点,那么就逐个遍历节点计算以此节点为根节点树的最远距离;然后他问还有别的方法吗?想了画了一会儿,说可以递归得到所有节点,返回两个值,一个是距离此节点最远距离,一个是以此节点为根节点的树的最远距离,不断更新树最远距离,最后即可得到最远距离;他接着问我这个算法的时间复杂度,有没有更好的算法?想了很久之后就承认说没有想到。
2、 面向对象的特征。
3、 什么时候会想要用指针作为参数,什么时候会想要用值作为参数
4、 循环链表与普通链表的区别,循环链表的好处
循环链表的概念将清楚了,比较了一下两种链表。至于循环链表的好处,自己脑子一下子又短路了,东扯西扯到了生产者消费者,然后面试官追问,我就无语了。
其实现在想起来,最大的好处就是从任意节点出发都可以遍历全部节点;还有就是没有null指针,没有头结点尾节点。
5、 进程与线程的区别?进程会共用内存吗?
这个自己没有答的很好。
一般的答案:进程是指一段正在执行的程序,而线程是程序执行的最小单元,一个进程可以拥有多个线程,各个线程可以共享进程的内存空间,包括代码段、数据段和堆空间以及进程级的资源(文件),但是各个线程有自己的栈空间。
进程可以通过共享内存进行通信。
6、 做过web项目,介绍一下我从页面填入表单数据到最后存入数据库的整个过程。
7、 Get和post方式的区别
8、 根据Json和xml格式的区别,哪个在数据传输时应用更广泛。
回答这个问题的时候,自己就简单列出了两者的一些区别。但是面试官一再的追问在网络传输的差异。自己想了一会儿觉得可能跟网络的知识有关,涉及较深的网络问题,自己就坦白说不知道了。
在网上也没有找到明确的答案,有结果的同学告诉我答案吧,多谢。
9、 正则表达式的?和*的区别
出来自己觉得也不太好,可以晚上睡觉之前查看状态发现变成了HR面试,自然很开心。
第二天上午收到了下午去面试的短信,以为HR面试像其他人一样是谈人生谈理想聊腾讯,于是准备了很多可能会问到了问题,恶补的腾讯公司的一些基本知识,结果在HR面试的时候,跟我想象的完全不一样,简直就是一场技术面嘛(晕呐)!全程问的都设计到了技术问题,问做过感觉最成功的项目,问项目实现的技术细节;问在专业技能上自己的优点和缺点,然后问产生优缺点原因;问通常会通过哪些途径学习,怎么在课外学习的…我准备的问题一个没有问,路上一直就反复问自己他们是不是弄错了把我设成二面了。回来之后知道HR面试也刷人不少,我整个人都不好了,感觉自己没戏了!所以永远都不可能预测到面试的问题,就算是HR面试也一样!
焦急的等了一个星期之后好歹是收到offer了,期间复杂的心情经历过就会体会有多难受了!非常的感谢这两个月陪自己努力的伙伴,还有那些一直支持自己的好朋友!