猿辅导服务端一二三面面经
猿辅导一面 8/15号
1、自我介绍,自己介绍项目里的技术难点(总是逃不过这个环节,实在是没啥亮点)
2、redis在项目里的使用,使用的架构(单机版)
3、单机版在实际生产中会有什么问题,除了单机版还了解哪些架构方式
4、问jvm内存模型
5、说说Java垃圾回收是怎么做的
6、Java的多线程是如何实现的
7、多个线程操作同一个资源会出现什么现象,怎么避免这些问题(线程安全的措施)
8、进程和线程有什么区别,常规题
9、线程之间的调度策略
10、线程之间的调度策略
手撕代码:
1、链表数字+1
2、IP地址划分,力扣93. 复原IP地址
猿辅导二面 8/21
没录音,凭记忆写的一点,不全
1、springboot的启动类有个注解,@SpringBootApplication如果放到别的类上,能启动成功嘛(瞎猜的不行,面试官说行)
2、双亲委派模型、为什么要打破,怎么打破
3、垃圾回收,G1收集器和CMS收集器,CMS为什么要stop the world,怎么解决浮动垃圾问题
不记得了
手撕代码:
给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n。如果不存在这样的32位整数,则返回-1。
示例 1:
输入: 12 输出: 21 示例 2:
输入: 21 输出: -1
猿辅导三面 8/26号
1、问实验室项目,10min
聊一下数据库,主要聊关系型数据库mysql
2、自己展开讲一下innodb引擎
问题:现在都使用固态硬盘,是否存在磁盘寻道的问题,B+树的优势如何体现
3、可重复读在innodb里如何实现的
问题:自己举个实际的例子,加间隙锁的例子,锁哪些范围
4、一段sql语句,怎么建立索引来进行查询优化
select * from table where col1 > 10 and col2 = 20 order by col3
评论:关于理论的部分答得很好,实战的部分都不是很好
5、redis 的zset,跳表的底层数据结构,实现原理,为什么用这个,怎么查找插入
6、设计一个微信朋友圈功能场景题,需要实现的功能:
用户可以加好友,发动态,浏览首页的动态,如果让我来实现该怎么实现这几个功能,底层数据怎么设计数据库表
7、上面那个场景题,动态里的图片具体怎么存储
手撕代码:
1、M个分段有序数组如何进行快速查找一个整数所在的位置,输出<分段index, 分段内的index>,没有返回<-1, -1>
input: <1, 3, 5, 10> <11, 14, 18, 20>
<25, 30, 30, 40>
find 10 return <0, 3>
find 30 return <2, 2>
2、好友关系进行分组
用户, 好友关系。进行分组。
用户:ABCDEFG
好友:AB,CD, FG,CE, AD
分组:{ABCDE}, {FG}
#面经##校招##猿辅导##Java工程师#