面试体验极佳,面试官声音很温柔,还给我讲了很多之前没想到的东西。
自我介绍。
你能给我讲一下什么是微服务吗?--将一个系统按业务划分成多个子系统,每个子系统都是完整的,可独立运行的,子系统间的交互可通过HTTP协议进行通信,也可以采用消息队列来通信,然后说了一下在实习方面自己对微服务的见解。
你刚才说的是编码的微服务,有没有考虑过在部署上的微服务是什么呢?本人没有部署过,这个问题是面试官讲了很多,我加了一些自己的想法和理解进去。
那你说一下微服务的优缺点有什么呢?简化部署,可扩展,错误隔离,缺点就是复杂度高,运营成本高。
说一下微服务的一个实际问题,A调用B,B调用C,最后C调用A,类似死锁但是微服务中是资源需求高,这个怎么解决?个人出发优化微服务通信方式,讲了讲RPC,REST,Message,讲了讲Message应该是最优解,解耦什么的挺好,除了单独一个消息服务,然后面试官说了说,请求的时候带一个日志标识,后续在上线之前也可以有一个流程测试,这部分比较深聊了一会。
然后面试官觉得聊的有点难了,换了一些简单的问题。
URL到页面渲染,我用自己的想法叙述了一面URL解析DNS解析TCP请求到DOM树构建。
然后提了一下JS的异步问题,就是eventloop,我以为是要说promise,都准备手写promise代码了。讲了一下事件循环,讲了一下HTTP中eventloop的机制,也就是任务队列和主线程在同步异步时候的运行问题,后面又把任务队列分成了微任务队列和宏任务队列讲了讲,这里我弄错了一个问题,任务队列是先进先出的,我说成了先进后出,后面面试官提醒我我改了回来。这块深挖了一下,聊了一些,记不清了。
异步的话当然不能忘了Promise,给了一个经典的输出序列问题,emmm,然后我上来就搞错了,忘记了是promise.then是异步,在创建promise函数的时候是同步的,里面还涉及了resolve和reject,讲了promise的状态是不能变化的,所以定下状态之后的promise是会运行但是不会进入error。这块答得不太好,因为很久没看这种了。
最后写了一个算法题,第三大的数,时间复杂度不要求和要求On,刚开始不要求我想的是sort之后选择第三大,要求之后发现这其实就是一个返回最大数的问题,直接找就行,讲了一下思路。
总面试时长一小时五分,比我想的45分钟长了20分钟
#字节面试##面经#