2023.4.23模拟面试记录
2023.4.23模拟面试记录
面试难度:有一定难度,大家答不出来不要慌哈,按照中大厂的面试来考察的,只会背估计不好回答,但是没关系,答多了就知道怎么回答了。
1、对Java IO模型了解吗?解释一下 BIO 和 NIO 区别?阻塞和非阻塞,同步和异步?
select 和 epoll,netty了解吗?
2、解释一下 equals 和 hashcode区别?在使用他们的时候有什么需要注意的?为什么要同时重写?哪些场景一定需要重写?
3、说一说String? 里面是怎么实现的?最长可以有多少个字符?
4、HashMap的底层实现?还会变回来吗?为什么用了红黑树会快啊?选平衡二叉树可以吗?红黑树查找为什么是 O(logn)?可以简单说一下红黑树的特性吗?
5、HashMap扩容了解吗?HashMap线程安全了解吗?为什么不安全?可以举个例子吗?为什么HashTable是线程安全?怎么加锁的?
聊一聊synchronized?是重量级还是轻量级?比volatile性能低?volatile 有什么用?什么是轻量级锁什么是重量级锁?
了解 CAS吗?了解哪些加锁方式?什么是可重入锁?synchronized是否是可重入锁?synchronized和retreenLock有什么区别?retreenLock是重量级还是轻量级?知道他的底层实现吗?synchronized知道底层实现吗?synchronized和retreenLock有什么自己 用过?CAS和AQS了解过吗?
6、关系和非关系数据库了解吗?可以聊一聊他们的应用场景吗?
7、mysql 索引了解吗?可以简单聊一聊索引吗?用了索引为什么查询会变快啊?索引的底层实现?为什么用B+树?用其他数据结构,比如平衡二叉树可以吗?
建议:回答的更多 +
1、IP地址和MAC地址有什么区别?
2、简单说下TCP有UDP的区别吗?为什么TCP是可靠的?怎么实现的?对流量控制和涌塞控制了解吗?怎么实现一个可靠的UDP?DNS是用到了TCP还是UDP啊?登录QQ的过程,是用到了TCP还是UDP啊?TCP的粘包和拆包了解?
3、简单说一下三次握手?三次握手过程可以携带数据吗?
4、从浏览器输入一个URL,回车,发生了什么?怎么从域名获得IP地址?ARP了解吗?
5、HTTPS了解吗?和HTTP有什么区别?
数据结构和算法这块熟悉吗?
快速排序用了什么思想?时间复杂度?有哪些优化方式?是稳定还是非稳定?为什么不是稳定的,可以举个例子吗?
什么是稳定什么是非稳定?
快速排序适合用在什么场景?快速排序和插入排序哪一个效果更好?一定是快速排序比插入排序好吗?他们都处于最好的状态,哪个更好?
归并排序了解吗?最差情况下,时间复杂度是多少?和快速排序哪个效果更好?
链表和数组有什么区别?
linkedList.remove(1),时间复杂度是多少?
是什么原因导致一个删除快一个慢吗?
红黑树和平衡二叉树有什么区别?他们的查找效率谁更快?平衡二叉树有什么特性?同样的节点下,造一个AVL树和红黑树,谁的高度比较高?
什么是哈希表?了解哈希冲突吗?开发地址法这种有没有了解过啊?只有一个数组,怎么解决冲突?怎么找到它啊?
说一说redis有哪些数据结构?你用过哪些啊?比如在项目中,有没有拿redis当作过缓存?Set用作缓存,是怎么用的?
做过什么项目?简单介绍一下?论坛项目哪块比较熟悉?简单说一下用户登录,是怎么登录的?关于登录,涉及到哪些表?token为什么要存在redis中?存在数据库的话可以吗?有没有测试过啊?用户表有哪些字段啊?id name passowrd 。。。
哪些字段适合加索引?如果用name当作索引,需要注意什么不?哪些情况会导致索引失效?模糊匹配为什么会索引失效?什么是二级索引?匹配失效和一级或者二级有关吗?
你是怎么加密的啊?有什么什么安全问题啊?数据库泄露了,会有安全问题吗?为什么?可以怎么优化啊?你还了解哪些加密算法?
为什么要对密码加密啊?如何数据库并不会泄漏,会有安全问题吗?忘记了密码为什么大家都采用重置的方式,不能找回密码吗?能不能找回原来的密码?怎么找回?
redis用来干嘛?验证码是多少位?十五分钟失效?控制用户发送验证码的频率?后端的频率控制怎么做的?输入错误会导致验证码失效吗?输入很多次错误会失效吗?
synchronized了解吗?为什么重量级了?说一下什么是阻塞吗?乐观锁和悲观锁有什么区别?有什么优缺点?乐观锁有什么优化方式吗?CAS了解吗?比较和交换怎么就原子化?ABA问题?CAS在Java8做了 优化有没有了解?
synchronized 底层实现知道吗?synchronized 是怎么加锁吗?具体是怎么锁对象的?volatile有什么作用?什么情况下变量可以加 volatile 啊?
shychronized i++
cas i++
volatile 除了可以读到实时最新的值,还是什么其他作用吗?单例模式有什么学过吗?你有没有实现过啊?单例模式一般用在什么场景下?单例模式会不会出现线程安全问题啊?
阻塞的话什么效率比较差?切换为什么消耗资源吗?
AQS了解吗?
为什么要使用线程池啊?用了线程池一定效率更好吗?
最大的线程数?核心线程数?
ThreadLocal了解吗?