2017技术一面
8.26参加了360的技术面试,远程视频。
面试的大哥看起来还挺面善的,人也不错。
进入主题:
第一题:有两个单链表,但是在某个Node两个链表合一了,整体形状就类似拉链,最后一部分是两个链表共有的部分。需要求的是两个链表的交点。
第一题:有两个单链表,但是在某个Node两个链表合一了,整体形状就类似拉链,最后一部分是两个链表共有的部分。需要求的是两个链表的交点。
最简单的当然是挨个看,时间复杂度是O(mn),m和n是两个链表的长度。
然后让我想一个更快的算法,我想的是可以把期中一个的链表的地址遍历出来,然后排序,再遍历另外的链表,每次折半查找,这样时间复杂度是O(nlogn).
面试官让我想个更快的,我没想出来。就说没想好。(其实可以使用hash表,这样时间复杂度是最低的,只需要O(m+n))。
然后面试官说,那咱们换个题目吧。
第二题:给你一个无序数组L,一个数字s,让你找出L中两个元素,这两个元素的和是s。
还是需要找到最快的算法。
还是最简单的蛮力算法,但是复杂度还是O(n^2).后来面试官提示说可以给你一些额外的空间,我就想可以使用hash表,这样时间复杂度就是O(n)
这题就算过了。
第三题:
这题是承接上一道题,问我hash表有几种结构,我就说一种是用hash function进行映射的,另外的一种就是红黑树。
然后问我,如果hash后的地址重复了怎么办,我记不太清了,就记着数据库当初讲过的一个概念,可以把之前的因子变大一倍,但是好像不要对,就和面试官说我记不清了。
然后就是第四题:
问我有没有使用过Linux以及Linux的版本号,我说我用的mac,而且平时也是远程连接学校服务器交作业,面试官就问我学校服务器的版本号,但是平时只是用用,没关注版本,所以也是不知道。
到此面试就结束了。
这次面试没有传说中的自我介绍,也没有最后让我问他什么问题之类的步骤。
感觉发挥的不咋地,也不造结果如何,不过总归是面试一回,把经历写出来,让其他朋友借鉴一下经验也是好的。