度小满金融就是原来的百度金融,我投了它的后端开发实习生岗位,岗位要求写C++、Java、php、python这些语言掌握一种都可以。度小满在上海有现场面试的站点,就直接打电话让我过去面了。
面试有两轮,说真的一开始进去有点慌,瞄了一眼排我前面的那个人是本科华南理工计算机,硕士上交软件学院的,也是报的后端研发。后来在休息室偷瞄别人简历,基本都是复旦、上交和同济的研究生,感觉心虚的一笔。后来还发现门口的三位HR有两位都说自己是同济的,还有一个没说自己是什么学校的。复试的面试官说自己是浙大毕业的。
一开始是简单的自我介绍。然后面试官大概简单问了一下项目做的什么,然后问我不是计算机的为什么来报这个岗位。我说因为觉得编程有意思,虽然自己是汽车的,但研究生期间自己做的项目和实习都是编程相关的,在这个过程中觉得编程非常有意思。然后就开始问一些技术问题,因为早上起太早了。。面试回来就去睡了个觉,所以记得不是很清楚,把记得的问题说一下吧。
1. 手写一下快速排序的算法,并解释其中的原理。
答:(这个问题答案还是网上书上到处都是,就不细写了。)
然后问我为什么要打乱数组,这个问题网上也有,就是如果数组是倒序的话会退化成O(n2)的时间复杂度,打乱是为了避免最坏情况。
2. 部署tomcat服务器,怎么查看它是否运行了。
答:我当时是用了几种办法,一是客户端去ping这个主机。(面试官:这个最多只能知道服务器是否能连上啊,能知道tomcat是否运行吗)。二是客户端去访问tomcat的首页,就是一个index.html,查看响应码。(面试官问:有什么服务器本地知道tomcat是否运行的办法吗)三是服务器本地用ps命令去查看进程,看tomcat这个进程是否存在。
3. 讲一下客户端访问服务器的过程。
答:通过http协议,以及底下的TCP/IP协议,客户端发送请求到服务器去请求资源,服务器返回响应,携带客户端请求的资源。(面试官问:那如果通过域名访问,怎么去到达服务器呢)我说是通过DNS协议将域名转换为IP地址。(面试官问:那有了这个IP地址怎么到达服务器呢)我说是通过路由选择协议,具体的不太记得。
问:OSI七层模型是什么,TCP/IP四层模型是什么。
问:TCP和UDP的区别。TCP如何提供可靠传输。
4. (1)什么是二叉树。
答:二叉树就是一种树,每个节点有小等于2个子节点。
(2)什么是平衡二叉树。
答:平衡二叉树的最大深度和最小深度的差不超过1。
(3)怎么得到平衡树的深度。
深度就是根节点到叶节点的距离。
5. 说一下数据结构中堆和栈的区别。
答:栈是一种先进后出的结果,通常是采用链表实现的。堆是一种完全二叉树,以最小堆为例,父节点一定小于它的两个子节点,通常采用数组实现。
6. 说一下进程和线程的区别。
答:进程是资源分配的基本单位,线程是CPU调度的基本单位。一个进程可以有多个线程,也可以只有一个线程。线程共享进程的地址空间、ID、堆栈段、代码段、数据段。
问:这个数据段具体指哪些数据。
答:就是全局变量和静态变量。
7. 如果在开发的时候你和你同事意见相左,怎么解决。
答:(1) 查阅书本、论文,从理论上来看哪种解决方案更合理。
(2) 看诸如github上的一些开源项目,看看别人是怎么做的,也可以看看别人做的效果如何。
(3)如果问题比较小,可以先做一个微型的程序来测试一下效果。
7. 说一下你的优缺点。
答:优点:自律,虚心(这里提了一下不怕别人恶意针对),自学能力强。
缺点:不太照顾别人感受,做事有点拍脑袋没有想好后果(还说了什么忘了)
问:那如果有人恶意针对你怎么破
答:一是要去完善自己的作品,苍蝇不叮无缝蛋。二是与同事处好关系,不要让别人想要针对自己。
(然后初试过了,进了复试)
也是一样自我介绍,然后问我为什么转行,大概问了一下项目做什么的。然后开始问技术问题。
1、(1)如何判断一个链表是否有环。
(2)那怎么知道环的起点呢。
(这题有点卡住了,面试官提示了一下)
(3)那如何知道环的长度。
答:就是相遇之后,让慢指针再继续走,直到回到这个点,走过的步数就是环的长度。
2、知道什么排序算法,手写一下最熟悉的排序算法。说一下进程和线程的关系。
答:插入、冒泡、选择、归并、堆、快速,然后手写了快速排序。还是问了一下快速排序代码中的一些细节。进程线程关系就跟初面一样答。
3、分页系统的实现原理和作用。
答:这里简要的画图说明了一下。然后说了一下分页系统主要是为了消除外部碎片,转换为产生非常小的内部碎片。
问:你知道如果要分配大于xxxk又小于xxxM的内存要怎么实现吗。
在发现我好像不太懂之后,告诉我有slab还有伙伴算法这些,让我回去看一下伙伴算法。
4、看你以前是汽车的,了解金融吗,为什么不投百度的无人驾驶岗位呢。
答:不太了解金融。(面试官说就随便问一下,这个关系不大)然后说无人驾驶其实跟深度学习还有计算机视觉关系更大,其实车辆工程过去也不是很有优势。
6、问了一下java web项目的一些内容,问我JavaScript页面是自己写的吗,都做了什么。
答:大概讲了一下做了什么,界面里调用了百度地图API,显示了一些比较好看的仪表。
问:有用到什么框架吗。
答:没有。。因为是内部使用的
好像还问了一些操作系统还是算法还是C++的知识,有一些忘了。然后面试官问了我一下最擅长的编程语言,以及希望在哪里工作,问了我最早什么时候能来。然后跟我说我基础知识扎实,但是不太懂服务器这些东西,不过关系不大,说其实不进来工作都不懂这些。然后复试就结束了,HR跟我说一周左右会电话通知结果。面试就结束了。