猿辅导一面 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}