-
面试职位:高级前端开发工程师
-
面试时长:2小时22分钟
-
面试方式:现场面试
-
可能由于疫情原因,复试一共面了3轮,包括前端负责人(二面)、技术总监(三面)、人事(四面)
二面
由于一面的时候已经问了很多前端的基础知识了,因此没有太多的涉及基础知识,而是真正接到一个需求了要如何处理
- 如果接到一个多系统集成的一个客服聊天系统需求,你会怎么去设计架构(包括用户系统、实时消息系统、富文本编辑系统、课程信息系统等)
- 首先是这个客服聊天系统要如何划分不同的系统
- 将用户列表、消息系统,富文本编辑系统放在同一个系统里面
- 将用户信息展示、课程相关信息展示等放到另一个单独的系统中
- 用什么方式隔离系统,又要采用什么方式实现系统间的通信
- 我只回答了使用iframe的方式进行隔离,采用postMessage的方式进行通信
- 富文本编辑系统,当用户输入了一个包含有文本、emoji表情、图片、视频的富文本后,我们有哪些方式将这些数据传递给服务端
- 简单暴力的直接把html获取出来传给服务端(但是要预防xss攻击)
- 我们可以将文本编译成一个类似抽象语法树的一个描述对象,不过这个对象,然后以json对象的形式传入进去
- 如何实现?。。。手写对象结构
- 首先是这个客服聊天系统要如何划分不同的系统
- 由于团队内部比较注重代码风规范,要求手写二分查找的方式看一下我写代码的严谨性(由于我平时比较少手写代码,拿到笔之后,脑子有点蒙,不知从何下笔,结果有点跑题了,没有采用二分的方式进行查找)
三面
这一轮是技术总监面试,基本上就挑你简历上写到的掌握的技术栈不断深入询问,所以,如果一些只是粗浅使用的技能点,不建议写在简历上,不然面试的时候一问深入就懵逼。(个人对于http的深层次原理和实现、linux系统操作等没有太过深入的研究,因此,大部分比较深层次的问题都没答上来)
- 问:谈一下浏览器中输入一个url,是如何请求到服务端的
- 答:输入url后浏览器会先到缓存中查找有没有当前域名的缓存,如果有,直接获取ip请求服务端,如果没有则请求dns服务器
- 问:那浏览器去哪里那缓存呢?
- 答:浏览器本身会保存一份,如果没找到回去系统的host文件中查找
- 问:那如果没有找到dns缓存,你要请求dns服务器,你要怎么找到这个dns服务器?
- 答:根据系统设置的默认dns服务器地址查找
- 问:那如果系统没有设置dns服务器地址呢?
- 一脸懵逼中…跳过此问题
- 问:如果得到了ip,你是如何请求服务器的
- 答:有了ip,我们就可以建立tcp连接了,通过三次握手建立连接
- 问:简单的说一下三次握手
- 答:客户端发请求看服务端是否正常运行,服务端如果正常运行则返回一个消息,客户端接收到消息之后会再次通知服务端准备进行请求。
- 问:那如何进行四次挥手断开连接呢?
- 一脸蒙蔽中…跳过这个问题
- 问:假设我们已经找到了服务器了,要如何获取资源文件
- 答:通过nginx配置可以设置root和index执行静态资源目录和文件,如果是接口的话,可以使用proxy_pass进行转发,这也是我们平时解决接口跨域问题的一种方案
- 问:如果有10台服务器,nginx如何区分需要请求那一台服务器
- 涉及到负载均衡,没有深入研究,继续一脸懵逼…再次跳过
- 问:如果出现了404,我们要如何排查原因
- 答:404就是找不到目标资源,我们首先需要检查一下链接是否正确,在链接正确的前提下,我们再看看服务器是否有这样的一个资源,如果有这样的资源,再看一下服务器的磁盘是否有问题
- 问:在linux系统中如何查看nginx的错误日志
- 答:先cd接入到nginx的日志目录,使用less或tail -f 查看日志
- 问:人工查看吗?有没有更高效的方式
- 答:可以通过一些bash脚本对日志文件按照一定的区间进行切割、解析,然后到处一个可读性更高的日志文件。
基本上,三面的时候,就是把你会的问题问一遍,问到你不会为止,不然会一直问到底,所以,如果不是自己很有把握的技术点的话,写到简历时需慎重。
四面
四面就是HR面了,基本上就是了解一下背景,核实一下信息,谈一下薪资啥的。不过这次HR竟然出乎意料的直接告诉了我面试结果以及我当前所处的等级,不过可惜的是,我距离目标等级T3.1还有一点距离。
不说了,先把面试不会的问题,自己好好的学习一下吧。