本人澳大利亚新南威尔士大学IT专业AI方向硕士一枚,近来因为疫情影响难以回去继续完成读书大业,只能颠簸流离于国内寻找企业收留做实习生。
之前在网上也看了很多面经,总结起来腾讯面试考的应该有以下四点:
操作系统 计算机网络 数据库 数据结构和算法在技术问答之前肯定是自我介绍啦~,我就简单说了一下我整体的语言使用经验,硕士用python本科用C++这些blabla的。。一般面试官都会针对你做过的项目或者你学过的科目进行提问,把你能想到的知识点都说出来哈哈哈哈。。我就顺便把我学过的AI神经网络方面的知识和做过的项目也说了一下。
一、操作系统(其实这部分在我面试的时候并没有问到)
进程与线程的概念等 死锁 消费者生产者 哲学家问题 银行家算法真的是浪费我时间。。。我特意在面试之前用python写了一遍哲学家问题。。。
二、计算机网络这部分其实大家都能想到问题,无非是一些tcp、udp、ip、http等协议的问题。
我面试的时候有以下的问题
Q:tcp和udp之间的区别有哪些?
A:tcp是可靠连接,udp是不可靠连接,用于即时通讯比如视频或者游戏;同时两种连接方式的报文格式也不太一样。tcp因为需要保证可靠性所以在报文头部有ACK等字段,用于确认接收端成功接收到发送端发送的信息,这些udp都没有。
Q:那如果想让udp变得可靠一些该怎么修改呢?(面试官的原话不是这样的)
A:我本来想了很久以为有什么特殊的方案。。。后来经过面试官提示才知道,他其实就是想让我说在udp上进行什么补充。。。比如说增加确认收到再继续发送的部分等等。。。
Q:滑动窗口相关的问题:
A:简单介绍了一下TCP中滑动窗口的定义和流程,然后往拥塞控制方面说了很多。。因为面试之前刚好准备了这个哈哈哈哈。。
这个部分问的比较少,但是你会了这个部分的知识,在很多问题的解决方案上都可以往上面靠。
因为我在自我介绍的时候说这方面只是简单的select所以面试官并没有问很多,但是事实证明,面试之前一定要看索引!!B+树是重点,hash索引了解一下,知道聚集索引和非聚集索引的区别等就ok了。
这个就是重头戏了。这个部分是面试官出题现场共享屏幕去完成编程的。
这次他一共出了三道题。
# url_list = [.....]
# url_list是给好的,用户输入一个url找到一个匹配的,只要匹配这一部分就行
def match_url(url):
for url in url_list:
l = len(url)
if url[:l] == url:
return True
return False
写好这一段之后他问我优化的方法。我的想法就是建立索引这样能够将时间复杂度从O(n) -> O(logn),因为利用索引之后整体的查找次数就变成建立好的B+树的高度。这里我将域名的部分做成索引,然后按照字母的顺序排序。
写一个插入排序def insert_sort(l):
result = [l[0]]
for j in range(1,len(l)):
flag = 0
for i in range(len(result)):
if result[i] >= l[j]:
result.insert(i, l[j])
flag = 1
break
if not flag:
result.append(l[j])
return result
因为没写过这个所以算是现场写的吧。。出了几个问题但是都冷静下来解决掉了。。惊出一身冷汗哈哈哈哈
平衡二叉树判断最后就让我提几个问题,我就照惯例问了一下如果成功通过之后在公司能够做什么之类的问题就结束了。面试官最后也给我提了一点小建议,让我多熟悉一下linux系统所用到的东西,之前面试深信服的时候也问了这个问题。。。结果我忘了去看。。
希望这篇面经能给大家带来帮助,祝大家找到自己希望的工作~