团孝子0实习勇闯暑期
bg:
投的后端java岗,无实习,笔试a了不到两道,项目是toy project,准备了一个多月的算法+八股
tl:
到店一面 3.28
到店二面 4.2
进入人才库 4.9 当天复活
骑行一面 4.11
骑行二面 4.15
oc 4.16
==============面经==============
到店一面 1h
自我介绍
介绍一下项目的功能和模块、承担了什么角色、数据库的表怎么设计的
1、重载重写的区别?
2、重写equals的时候为什么必须要重写hashcode?
3、arraylist和linkedlist的区别?
4、vector是如何实现线程安全的?(这个在之前背的八股里都没遇到,Vector 的方法都具有 synchronized 关键字修饰。但对于复合操作,Vector 仍然需要进行同步处理。)
5、hashmap的底层数据结构?(把数组+链表说成哈希表+链表了,纯猪脑)
6、hashmap放入一个元素的过程?
7、ConcurrentHashMap是如何实现线程安全的?
8、synchronized 和 reentrantlock 的区别?
9、reentrantlock 如何实现公平锁?
10、synchronized加在静态方法和非静态方法方法上的区别?
11、synchronized的锁升级过程?
12、单例模式有哪些实现方式?(只了解饿汉式和懒汉式)
13、饿汉式如何保证线程安全?(胡言乱语...)
14、线程池的核心参数?
15、线程池拒绝策略有哪些?
16、当来了一个任务线程池如何处理?
17、受检异常与非受检异常的区别?
18、有哪些非受检异常?(nullpointer,illegalargument记不清了,汗颜,太细了)
19、spring和springboot的区别?为什么要基于spring再封装出springboot?
20、springboot常用的注解?
21、涉及到依赖注解的注解?
22、@aotuwired和@resource的区别?
23、@inject的使用场景?
24、springboot快速启动的原理?
25、AOP的原理?
26、动态代理的分类?(jdk proxy,cglib)
27、jdk proxy和cglib分别在什么场景使用?(代不代理接口)
28、springboot 声明bean的注解?
29、循环依赖?
30、springboot怎么解决循环依赖?
31、三级缓存?
32、每一级缓存的作用?
33、springbean的生命周期?
34、springbean 初始化及实例化时可以扩展的地方(postprocessor等orz)
35、缓存穿透和缓存雪崩的定义和解决方法?
36、布隆过滤器的原理?
37、布隆过滤器的误判概率受什么影响?
38、mysql 事务隔离级别?
39、可重复读是如何实现的?
40、MVCC
41、当前读和快照读的区别?
42、分析一条sql语句的索引使用情况
43、索引的数据结构?
44、为什么索引不使用b树?
45、jvm内存区域?
46、threadlocal原理?
47、theradloalmap如何解决哈希冲突?
算法 lc92
到店二面 40min
项目挑战点、问题
1、为什么用redis不用本地缓存?
2、redis 快有什么原因?
3、了解过redis集群吗?
4、redis渐进式hash?
5、线程安全的懒汉式单例模式的性能问题?
6、mysql索引结构是什么?
7、为什么要用b+树?
8、b+树相对于b树的优点?
9、where a is null 会使用到索引吗?
10、mvcc
11、快照如何实现的?
12、可重复读无法解决幻读的场景?
13、介绍当前读?
14、行级锁怎么解决当前读的幻读的问题?
15、线程池的工作流程?
16、线程池线程复用的原理?
17、线程池核心线程数、最大线程数怎么设置?
18、http请求 get和post的区别?
19、幂等性?
算法 合理ip地址
最近看了什么书吗?
如何学习新鲜的知识点?
骑行一面 40min
项目拷打
1、主从复制如何实现的
2、主从复制的同步方式
3、问了一些项目的问题
4、string可以被继承吗?
5、string的定义方式(直接赋值和new String)及区别
6、string常用方法
7、string的tostring如何实现?(直接return this;)
8、hashmap用string做key的好处?
9、string stringbuffer stringbuilder的区别
10、== 和 equals的区别?
11、integer 赋值的方法的区别?
12、java集合的特点
13、hashmap的底层原理
14、hashmap扩容算法?(扩容机制)
15、arraylist和linkedlist的区别
16、set如何实现元素不重复(底层用的hashmap可以去重)
17、索引类型
18、如何优化一个sql
19、如何分析是否命中索引 (explain命令)
20、redis优点
21、redis为什么快
22、redis数据类型
23、RDB、AOF的优缺点(RDB 优点是数据恢复速度快,但是快照的频率不好把握。频率太低,丢失的数据就会比较多,频率太高,就会影响性能。AOF 优点是丢失数据少,但是数据恢复不快。)
24、redis过期删除策略
25、缓存穿透、缓存雪崩、缓存击穿
26、java异常
27、springboot控制反转和依赖注入
28、springboot三级缓存
手撕单例模式和二分查找
骑行二面 50min
1、arraylist、linkedlist的区别
2、为什么要用spring框架
3、aop的底层原理
4、过滤器的底层原理(责任链模式)
5、mybatis框架解决了哪些问题?
6、mybatis-plus 如何访问数据库
7、#和$的区别
8、full gc 和 yong gc
9、垃圾回收器
10、cms和g1的区别
11、设计模式
12、如何创建索引
13、索引创建了一定起作用吗?
14、如何查看索引是否生效(explain命令)
15、慢查询(>100ms 算作慢查询)
16、线程池的使用场景
17、线程池的优势
18、线程池与aqs
19、如何评估访问量(qps)
20、redis的数据结构
21、spring cache 注解失效
场景题
==============总结==============
美团是面试体验最好的厂,每个面试官都是