阿里AE部门3.11一面
电话面试50分钟
从项目写的技术点开始问起
1.RPC工具的难点
2.动态代理,CGLIB是怎么实现的
3.负载均衡作用
4.如何设计负载均衡器
5.负载均衡如何保证健壮性
6.SpringBoot的优势
7. SpringBoot如何实现自动配置
8.Linux什么命令精准查找一个文件
9.进程与线程通信上的区别
10.HTTP有无状态,Cookie和&Session
11.MySQL的B+Tree和 BTree的区别,B+Tree在内存中有何优势
12.Redis包含的模块
13.项目中Kafka的作用
14.项目中支付宝支付接入时出现的问题
反问
5.负载均衡如何保证健壮性,这题中需要怎么设计? 答:采用心跳机制检测宕机节点。
腾讯PCG-腾讯看点部门3.16一面
线下面试90分钟
1.手撕代码:一道简单的动态规划,给出三个小球重量分别为{1 2 5},输入一个重量值比如10,输出凑到这个重量所需的最小球数量。
不用dp[i],怎么减小空间复杂度?
不用dp[i],怎么减小空间复杂度?
2.MySQL中B+树相对于红黑树在查找上为什么更占优势?树高和磁盘两个角度。
3.海量QQ号,怎么设计hash算法,使hash后结果尽量均匀?提示对QQ号加上salt值,使其更加具有随机性。
4.hash后在桶上形成链表,怎么优化?
6.简历中写了任务调度算法研究,讲一下研究内容。
7.操作系统中的调度算法知道多少?
8.CFS调度算法
9.任务调度中如何控制进入某一节点的流量?使用消息队列,或者设计一个调度中心。
反问
后台开发的发展路径。
由于我是上午最后一个,并且面试官人超好,很愿意传授技术上的经验,给我讲解了腾讯这种用户量的企业,是如何在技术层面解决海量数据以及设计架构的。以及介绍了腾讯看点部门的业务内容,真的是技术非常好的一个部门👍。
并且面试官讲到了后端开发岗做的事就是解决业务问题,重要的是做选择,选择最适合业务的技术。这就需要很扎实的基础知识,并且需要融会贯通。
在学习基础知识时,首先要知道一门技术是什么,为什么用,最重要的还是提炼技术背后的方法和思想。需要提高知识迁移能力。
比如 Paxos的思想,就是解决分布式一致性问题最好的思想,腾讯解决分布式一致性问题也是使用的Paxos的方法。
3.17二面
视频面30分钟
1.直接问项目,帖子是怎么存数据库的?帖子中有图片怎么进行压缩优化?
2.怎么防止XSS攻击?
3.SpringBoot怎么在服务端接收到HTTP请求后,再转发到控制层?
4.论坛中的关注操作是怎么做的?并发量高了后怎么优化?
5. SpringBoot或MyBatis的源码看过吗?
6.原生的Socket网络编程,怎么设计解析请求报文?
7.用户密码是如何保存在数据库中的?如何在用户登录时验证身份信息?如何防止登录请求报文被窃取?
美团广告平台部3.22一面
视频面50分钟
1.Java里是怎么定义垃圾的?引用计数算***出现什么问题?
2.可达性分析里哪些对象可以作为GC Roots?
3.GC算法
4.分代回收,eden和survivor怎么流转
5.所有对象都是在新生代分配的吗?
6.类加载都有哪些阶段,各个阶段的功能?
7.缓存问题,都是如何解决的?
8.布隆过滤器是怎么实现的?能否删除Bitmap上的数据? 答: 两个数通过k个哈希函数得到的值都相同,落到Bitmap的同一处,则不能删除。
9.MySQL分别在哪些场景下适合分库分表?分表后id冲突怎么解决?
10.分表后怎么解决数据热度不均衡的问题? 答:一致性哈希算法。
11.浏览器中输入url到返回页面发生了什么?
12.算法题:字符串s1=abc,字符串s2=acb,判断s1和s2除了字符顺序,其他都一样,时间复杂度O(N)空间复杂度O(常量数组),或者 时间复杂度 O(N^2)空间复杂度O(1)?有没有时间复杂度小于O(N^2)且空间复杂度O(1)的算法,提示可以修改输入的字符数组。
13.项目的论坛类网站中Redis是怎么使用的?缓存是如何更新的?
14.Kafka怎么应用的?为什么不把需要消费的数据持久化到数据库?
反问
1.贵部门业务实现中主要用到的工具? 答:常规的一些工具如Spring。
2.对基础知识该如何加深理解? 答:知道是什么还要知道为什么,因为当业务开发中遇到与预期行为不一致时,才能解决问题或者进一步优化。
网易互联网杭州研究院3.24一面
视频面20分钟
1.详细讲一下你觉得做得好的一个项目。用Redis和Kafka做了什么?
2.缓存失效了该怎么办?
3.缓存雪崩是什么? 该如何处理?
4.消息队列的作用?项目中削峰是如何体现的?
5.Redis的几种数据类型。列表相关的数据结构。SKIPLIST是怎么样的?
6.Kafka的组件了解吗?
7.Java并发中的线程池是什么?怎么创建?分类?
8.进程和线程的区别?
9.进程通信
反问
1.Kafka深入学习有什么方向? 答:结合大数据相关,要看源码。
3.26二面
视频面35分钟
1.聊一下SpringBoot的作用。
2.Spring的IOC是什么?bean是怎么加载的(或者说怎么初始化一个bean)?
3.接上题,那JVM是怎么加载一个类的?怎么找到字节码文件的,去哪些文件夹定位的?
4.双亲委托模式是什么?那现在可以回答bean的加载吗?
5.项目中 Kafka怎么使用的?消息队列中消息一直堆积该怎么办?相比用Redis来做消息队列有什么好处?
6.ES做搜索的原理?倒排索引了解吗?关键词对应多个文档该怎么办?
7.项目中用到的线程池是什么?怎么创建的?为什么选FixedThreadPool?
8.你说饱和策略采用的是 抛弃的方法,那当遇到同时产生大量线程的场景,你的网站页面会有什么样的表现?为什么不用将线程排队的方法?
9.Java的线程有没有对应os上的线程?
11.假如Redis中有多个KV要更新,KV1更新了,KV2失败了怎么办?Redis不支持回滚,那要怎么设计? 答:版本号机制。
反问
1.怎么把基础知识应用到实际项目中? 答:学习优秀的工具和中间件的解决方案,比如Redis内存加单线程就是速度快,所以就有了Nodejs这种技术,就是一样的单线程。技术就是用来解决问题的,始终是绕不开这些基础问题的核心思想的。
全部评论
(16) 回帖