快⼿java开发⾯试经验⼤全
1.⾃我介绍
2.java集合、hashmap详细介绍、关键参数、线程安全的集合、队列和栈、⽤两个栈实现队列算法
3.jvm结构
4.多线程锁:synchronized、reentrantlock、countdownlatch、锁升级
6.线程池有哪些、核⼼参数、线程池运⾏机制
7.threadlocal
8.写线程安全单例模式,volatile原理、
9.写单词拆分问题
10.反问
好像叫基础平台部门。java岗。
总体来说,快⼿的⼀⼆⾯会根据难度循序渐进,并且会出⼀两个由易到难的算法题。⼀⾯偏向基础,⼆⾯偏向项⽬去问。⼀⾯:
synchronized⽤法
public、protect、default、private
static修饰 作⽤域
java基础类型
忘了。。
算法题:
合并链表
字符串合并相邻的相同字符
⼆⾯:
实习经历
项⽬
以下为RabbitMQ问题:
RabbitMQ基础概念
架构
有哪些机制保证消息传输正确性
事物下,假设最后⼀个commit操作丢失了,此时怎么办
算法题:
归并排序
⽜客:集合的所有⼦集
1 ⾃我介绍,不问项⽬直接开怼java
2 java⼋⼤数据类型是啥,各⾃占多少单位,float 能表⽰0.25吗 int 的数据范围是多少
3 java list接⼝拿啥实现的,arraylist和linkedlist 删除⼀个元素的时间复杂各是多少
4 hashmap的put的时候啥过程,扩容的时候啥样,怎么判断元素是低位还是⾼位
5 java⾥⾯线程怎么通信的,锁,说说synchronize的锁升级过程,说到monitor
6 知道有哪些排序算法,平均时间复杂度是多少
7 redis的zset怎么实现的,那么跳跃表的原理是啥,zscore⽤过吗,时间复杂度是多少
8 输⼊url发⽣了什么,ipmac地址是啥协议
9 ⽤的web容器是啥,url请求咋传到tomcat然后再咋到controller的
10 这个requestmapping 的map啥时候初始化的
11 写代码:单链表的归并排序
12 单例模式懒汉
13 单例模式饿汉
14 单例模式双重锁检查 volatile有啥作⽤(防⽌指令重排序)
15 内部类的单例模式写法
16 智⼒题:两⼈抛硬币,我先抛,谁先扔出来正⾯,谁赢,问我赢得概率是多少
1.⾃我介绍
2.项⽬介绍
3.如何判断⼀个⽤户是否在线?
4.怎么做的权限检验?(其他⼈对你消息进⾏抓包)
5.有没有学过token?
6ty怎么实现的聊天?
7.连接管理怎么实现的?怎么判断这个⽤户断开?
8.考虑过怎么给这个项⽬植⼊漂浮⼴告吗?
9.连接断开是客户端断开还是服务端?
10.为什么选择netty,为什么不直接使⽤TCP?那个的性能更加好?
11.简述AQS?
12.volatile与synchronized的区别?
13.synchronized与Lock的区别?
14.如何对⼀个代码块选择合适的同步机制?
15.有没有学习过服务降级?
16.spring的链路过程?
17.spring的AOP?
18.简述代理模式?
19.动态代理和静态代理?
21.数据库的隔离级别都有那些(MySQL是那个)?
22.怎么解决幻读?
23.MySQL的索引都有那些?
24.B树与B+树的区别?
24.范围查选择那个数据结构⽐较好?
26.堆排序?
27.
⼆叉树的层序遍历
快⼿java⼀⾯
1.⾃我介绍
2.聊项⽬
3.java基本数据类型,long⼏位, 能存储什么范围的数据 ,float怎么存储⼩数的
4.String是基本数据类型吗 底层怎么实现的 (final修饰的char数组)
5.volatile关键字底层,如何实现可见⾏和有序性,为什么不能保证原⼦性
6.synchronized关键字底层,静态⽅法锁的是什么,⾮静态⽅法锁的是什么,静态代码块锁的是什么
7.hashmap put元素的原理,1.8以后的优化有什么,为什么长度超过8变成红⿊树
8.数据库得事务隔离级别,innodb的默认隔离级别
9.innodb有哪些索引,聚簇索引与⾮聚簇索引区别,覆盖索引怎么实现
10.联合索引的失效情况,给了个例⼦
11.mvcc机制的原理
12.数据库乐观锁和悲观锁
13.b+树与b树,为什么⽤b+树
15.缓存穿透,缓存击穿,缓存雪崩,分别怎么解决
16.⼀个排序⼆叉树,⼀个target值,寻⼆叉树中的⽐target值⼩的最⼤值
17.上⼀题不会,换成⼤数相加了(我这个垃圾)
18.概率题:两个⼈抛硬币,抛到正⾯赢,先抛的⼈赢的概率(2/3)
19.cpu占⽤100%,如何排查问题(考Linux命令吗?)
快⼿⼀⾯
数据库update过程
怎么解决幻读
treemap和linkedhashmap
wait和sleep⽅法区别
线程池相关(⼯作队列、核⼼线程最⼤新任务什么状态、线程存在哪(没听懂
synchronized原理
volatile
撕 单链表两两反转
之前发过⼀次⼀⾯⾯经,这次和⼆⾯的⼀起发了
1. ⾃我介绍
2. ⼆话不说,先写⼀个LRU,吭哧吭哧写了⼆⼗多分钟,之后⾯试官给提了⼀些优化意见。
3. TreeSet 和 HashSet 是怎么⽐较元素是否相等的?
4. Integer 和 Long 的 hashCode() ⽅法实现有什么区别?
5. ConcurrentHashMap 原理,1.7 和 1.8 区别。
6. 线程池有哪些参数,执⾏流程是怎样的?有哪些常⽤ BlockingQueue,区别是什么?拒绝策略有哪些?shutdown() 和
shutdownNow() 有什么区别?
7. synchronized 和 ReentrantLock 区别?ReentrantLock 实现原理,AQS 原理,CountdownLatch 和 Semophore 的作⽤?
8. ThreadLocal 原理,线程池中使⽤ ThreadLocal 会有什么问题,为什么?软引⽤和弱引⽤有什么区别?
9. 单例模式有哪些实现⽅式?双重检查锁怎么实现,为什么⽤ volatile,序列化破坏单例了解吗,怎么避免?
10. 聚簇索引和⾮聚簇索引区别,sql 语句执⾏有哪些步骤?
11. 事务隔离级别有哪些?可重复读怎么解决幻读?binlog 有什么作⽤?
12. MySQL 存储时间有哪些数据结构?有什么区别?
13. Redis 想要提交多条命令,但是只有⼀次 Round-Trip 怎么实现?pipeline 了解吗?持久化⽅式有哪些,区别是啥?AOF 重写介绍
⼀下,fork ⼦进程有什么影响?
竟然没有反问环节,有点慌...
java中常用的设计模式有哪些⼆⾯ 55min
1. ⾃我介绍。
2. final 关键字的⽤法。
3. 在哪些情况下,变量虽然没有使⽤ final 显式修饰,但还是被编译器提⽰不可修改?
4. 谈谈你对 SpringBoot 的理解,主要解决了哪些问题,集成了那些第三⽅框架?⽀持哪些数据源?
5. 说⼀下进程和线程的区别?Java ⾥的进程和线程是怎么体现的?
6. 基础知识先聊到这⾥,下⾯来写个代码:有⼀张桌⼦,桌⼦上有⼀摞⼀摞的盘⼦,每摞盘⼦的数量是已知的,数量是⽆序且不等的,
现在需要你去挪盘⼦,通过尽量少的挪动次数,使每个位置上的盘⼦数量趋于平均,需要你打印出每⼀次挪动盘⼦的动作,⽐如从位置 a 挪到位置 b (a和b是数组的下标),那就打印 a->b。输⼊是⼀个⽆序数组,输出是每⼀次挪动盘⼦的过程。这道题写了挺久,加上跟⾯试官讨论的时间都半个多⼩时了。
7. 代码先写到这⾥,我们在聊些别的问题,关于 Java 并发编程,你都了解哪些⽅⾯?
8. Java 最经典的 synchronized 关键字,你了解它的⽤法吗?
9. 同步代码块中怎么释放锁?Object.wait() 的底层原理是什么?或者说 wait() 和 notify() 的机制在底层是怎么实现的?
10. JUC 包下常⽤的锁有哪些?ReentrantLock 中有个 Condition ,你了解吗,⼀般怎么使⽤?
11. 你在实际项⽬中有没有⽤过 MySQL 的⼀些⾼级功能,⽐如事务之类的,使⽤场景是什么?
使⽤场景这个记得不太清楚了,答得磕磕巴巴,然后⾯试官说你没实际⽤过的话就不⽤说了...
12. 你简单介绍⼀下 MySQL 的隔离级别吧。
13. 反问环节。
55min
1. object类有哪些⽅法
2. clone⽅法的使⽤
3. 隔离级别
4.
完全⼆叉树和满⼆叉树
相关知识点: 树dfs
相关知识点: 树dfs
相关知识点: 树dfs
相关知识点: 树dfs
5. 接⼝⾥⾯常量的特点,1.8之后
6. redis数据类型
7. 设计模式,享元模式内容
8. 线程池参数,⼤⼩设置
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论