#面试# 迟来的腾讯后台一面凉经
回顾了面试录屏,实在是太丑陋太狼狈了呜呜,还是准备地不够。┭┮﹏┭┮
自我介绍,面试官让我主要讲技术就好了,校园经历、个人评价不用讲太多。
🟪项目
接下来让我讲最有挑战性最复杂的项目(api项目)
技术栈是存储mysql,spring是吧
项目背景是什么?是一个实训项目还是?
相当于做了一个聚合是吧?
提供的是什么协议?http协议吗还是?
做这个项目最大的难点,困难是什么?
回:架构设计,获取调用次数接口,用网关和rpc实现远程连接,限流染色降级路由等
那这个是网关的常规操作吧我理解是,那这个当作设计层面吧,有没有一些定位层面上,代码层面上的,比如遇到一些case,定位好几天没定位出来,比如超时、内存泄露、性能优化的case
应该是要问实现层面上的,然后我本来想答网关调用接口时的异步操作的原因,本来想调用接口后打印响应日志,但是事实是接着往下执行,直到返回filter,它才去调用模拟接口。 但是我这里解决方法答的不好,面试官一直问我具体场景是什么,当时脑子里思路都不清晰了,得好好看看流程和解决方法。
dubbo和springmvc都是rpc框架是么,区别有什么?是在同一层级实现?
简介的两个项目的技术选型有什么考虑?
接口行为监控可不可以通过上报的形式,就是调用后接口次数+1做了什么异步的操作,拉一个消息队列?
🟨计算机基础
Tcp/Ip模型,每一层实现了什么功能,包头信息,最主要的字段是啥,每一层单位是什么 ?
看我答不上来让我讲讲osi七层模型也行 ?
三握四挥 服务端如果没有数据需要传输了,它的两次挥手可不可以合为一个?
进程、线程、协程
java有轻量级的微线程吗?就是由java层面,jvm直接去做调度切换的,不是由系统去做的。
操作系统的中断处理,比如键盘按了下回车,然后这个时候会发生什么?触发了一个信号,这个信号怎么给到cpu,cpu怎么给到应用程序,之间怎么做切换调度的?
java创建线程需要触发软中断吧,软中断流程怎么样的?了解系统调用吗?
IO多路复用了解吗?
redis这种单线程模型有什么缺点吗?
我还乱答了什么无法支持高并发,结果面试官:单线程为什么这么好,不就是用了IO多路复用,所以才能支撑并发量吗?我:......(无地自容)
🟩两道算法 出的已经很简单了
1.字符串的压缩(map或双指针都可以)
2.计算天数差
🟦最后面试官甚至给了我几十分钟的交流时间,包括我的简历写法,技术名词太多了,写得多问的就多,然后错的就多,还建议我学的时候要保持好奇心,去钻研,这个项目里面做的事情的实现原理,要懂,(rbac,aabc权限模型),技术选型要探讨,把项目吃透,然后看关键源码,jvm,垃圾回收,threadlocal线程隔离怎么做的,aop能讲清楚吗,api签名认证做什么的,项目做好是不能停留在使用层面,基础要过关,计算机网络、操作系统得掌握牢靠。
总结:虽然答得很狼狈,但是收获了好多东西,真的很感谢这位面试老师!!!
后续规划:
1.优化api项目,丰富一些功能和添加一些中间件,同时多去学习一下rpc、dubbo、java、springmvc,api网关等框架和技术的源码和八股,才不至于被问实现原理就倒了。
2.计算机基础:数据结构、操作系统、计算机网络系统回顾,做总结记录多啃点底层原理;然后坚持每日2-3道算法题。
多记录记录技术心得,不要浪费每一天!
