阿里云基础平台中间件2024届实习生一面
中间件部门的面试真的非常硬核,八股没时间细背的我只能靠本能去回想一些本科的知识,被面试官杀得片甲不留。后面看上去要狠背八股了。
一、自我介绍
从教育经历、专业方向到基础课程;项目介绍方面主要介绍了项目技术梗概及主干技术,以及自己负责的内容。
二、基础知识问答
- 从爬虫开始,问到搜索引擎(算法相关)
- 看到我做过python相关的项目(深度学习一个,SDN拓扑算法一个),面试官问我:假设我现在需要设计一个python爬虫,你会怎么去通过关键词爬网页?(答爬虫的技术我没有具体了解过);
- 面试官说,没事,不用说细节,你说一下你的思路(答从一个首页网站开始,检索网页上的关键字,提取后将所有可以点击的链接入队,再从队里取链接递归)
- 面试官继续问:那你这样做是不是什么遍历(答BFS),那你为什么要用BFS而不是DFS?(答我认为在一个页面上,比如说有6个选项,前4个选项若都没有关键字相关信息,对其进行DFS的话,会浪费大量的运算资源,而通过BFS初步筛选出需要进入的页面,入队前就对其进行条件判断,可以先一步减小搜索范围【这一部分答的有问题,条件判断并不与bfs或dfs有直接关系】)
- 继续问:那你用这个BFS,重复进入的页面你是怎么标记的呢?(【之前没想到拓扑序环这回事】答直接想到的可能是hash表)面试官问:那千万级别的页面岂不是空间爆炸了?(答是的,这样的话我要修改我的思路,我认为从dfs角度入手会更好,比如
www.xxx.com/a/b/c的网页,先从c的兄弟节点进行递归搜索,完毕后将www.xxx.com/a/b入队,同样对b兄弟节点搜索,以此类推。这样每一次搜索时队列不会太大,而且存储visited网页的时候也只需要将www.xxx.com这样的较短的根节点记录)
- 继续问:像你刚才说的会遇到环,那如果让你找到页面搜索中有无环你会怎么做?(答快慢指针)说一下原理(详细解释了快慢指针为什么会找到环)
- 继续问:如果我现在要搜索“刘德华”这个名字,你会怎么设计这个搜索方案?(答字典树,设计一个类包含节点字符、子节点数组、是否为叶子节点的数据结构,从根节点依次存入刘、德、华,并在“华”字节点的“是否叶子”布尔值设为true);问说一下搜索时算法的工作原理(从root开始逐个搜刘、德、华,如果是精确搜索的话将该节点存放的页面返回,非精确的话就将“华”的孩子继续遍历返回)
- 问那如果我搜索到的页面非常非常多,怎么样去将用户想要的页面排到前面?(答我会设计一个权值算法,类似于位运算,去匹配用户搜索字和网页标题所匹配到的字数,将匹配字数 / 网页标题长度,其权值越大的排到越前面)
- 问如果一次性搜到了八千万张页面,怎么去存?(答我会设计一个hash表,key为字典树的叶子结点,value为页面的数组);问那这样岂不是非常非常大?存储空间恐怕效率很低吧,你会怎么解决页面的编码问题?(答从编码角度我没有特别好的想法【我觉得哈夫曼编码存仍然还是很大】,但我会设计一个类似cache的类去存,用LRU和定长数组先给用户返回该关键字下的热门网页)
- 系统相关
你在linux系统下开发过吧,那我问一些操作系统相关的知识。
- 问在shell命令行中,当你输入一个grep指令,操作系统都做了什么事,请回答得越细越好。(答首先grep一般不会是单独的输入,他会以通道的形式跟在某个命令之后。shell命令行输入之后,系统底层会起一个进程去解析这个正则化表达式,将这条命令解析为一个指定的系统调用,然后去找cache,看这个命令的地址是否在cache中有存)面试官打断,问cache中存的是什么(答物理地址【其实这里答完马上意识到错了,该说cache存储形式的地址块,再通过组相连去找到实际物理地址】)
- 继续说系统的事(答如果有存直接从cache中拿,如果没有的话就去主存中找实际的物理地址在哪)面试官打断,问你说到去主存找,说一下如果是去硬盘找相应的地址操作系统都会怎么做(沉默了一小会,实在想不起来了【脑子里全是RAID】,答忘记了,我现在只记得磁盘巡道的相关内容了)
- 网络相关问题
面试官:我看你有做过网络的一些项目,我们来聊一些网络相关的问题吧。
- 说一下从浏览器键入一个网页的时候,整个计算机是怎么通过这个网页找到相关的页面返回过来的,越细越好,让三岁小孩都听懂。(答首先去解析在浏览器搜索栏的这个网页是否合法,通过DNS去解析成一个ip地址)面试官打断,问DNS是什么?(答域名系统,在里面会存放网页和相对应的ip地址)
- 继续说(解析为ip地址后会到最近的路由器去查询是否有这个ip-mac的表项记录,如果查到的话就根据记录去找这个实际MAC地址下的目标主机,进行三握四挥【这里又详细说了tcp三握,ack、seq号等】;但如果没有找到的话就从路由器广播一个包,在包里放上目标主机的ip去寻找目标主机在哪里,再返回相应的ip和mac地址)【这里已经答偏很多了,我说的是之前项目里局域网搜索的arp协议,根本不是web浏览器从DNS获取ip的那一套,此时脑袋已经完全混乱了,计网的八股真的没时间准备,没想到问这么细,web浏览器获取页面的相关过程如下:浏览器是怎么做的】
- 追问这个ip-mac表在哪存的?(【已经越错越错了】说会存在最近的路由器里);问如果你在学校的机房里,这个表在哪?(答机房的路由器吧大概);问那这么多网页,机房路由器岂不是存亿级别的表项?(已经意识到完全答错了,不是局域网那一套,本来还想顺口说ARP有LRU...答我之前说的有问题,这部分我很不熟悉,回头再补充这方面知识)
三、部门相关问答
- 先问了中间件部门的业务范畴,都涉及什么技术栈
- 问了系统是不是下周开,开了之后做笔试,再进行后面的面试?(是的)
- 问了下新人培养体系,以及实习生所能参加到的环节(参与实际项目)
总结、
这是参与过的所有面试中问的最详细,最刨根问底的一次,整个面试过程就是被面试官狠狠的拷打。事先真的没想到实习岗的面试会有如此的难度,感觉是完全向正式校招看齐了。八股该背还是得背,千万不能因为实习岗就掉以轻心。