两面都是微信视频,写代码用面试官给的一个网站(有高亮无提示)
一面:3.9-60min
一面没录上音,凭记忆来写,然后自我介绍里面说了对JVM和并发比较熟,然后面试就整体偏向这边了。一面本来约的3.8的,面试官有事面试前15min临时改到3.9。面试结果当晚就有了,当晚安排二面(自己选的12号)
-
自我介绍
-
印象中项目问的不多不深
-
JVM运行时数据区
-
JVM内存布局(新生代(Eden、Survivor)老年代)
-
对象创建过程,在Eden、Survivor、老年代怎么走的
-
怎么判断一个对象需要被回收(引用计数、可达性分析)
-
可达性分析具体是怎么实现的(OopMap、然后概念性的讲了下可达性分析的原理)
-
什么对象可以作为GcRoots
-
垃圾回收算法有哪些
-
CMS了解吗?介绍一下它垃圾回收的流程,他是采用的是上面哪一种垃圾回收算法,是用在老年代还是新生代
-
Java的锁有了解吗(synchronized、Lock)
-
synchronized重量级锁,解释一下为什么叫重量级(答了内核态和用户态的切换,然后答了1.6之前是重量级,1.6之后对这里的优化(偏向锁、轻量级锁))
-
ReentrantLock介绍一下(说了juc说了AQS说了公平非公平)
-
AQS里面核心原理(记得答了同步队列,state标志,Node节点封装线程)
-
synchronized和ReentrantLock的区别
-
用过其他什么并发组件吗
-
Semaphore里面怎么实现的(答里面也是用AQS)
-
然后还有一些计网和数据库的基本八股,面太多记不清了
-
算法:先写一个基础二分,然后给不同的情况、进行二分的变种(找重复元素中的第一个,第一个大于给的元素的值)
-
算法写完了面试官突然看到我简历上有看过AQS源码,又来深挖我
-
AQS加锁逻辑,能讲多细讲多细(还好我前几天刚复习看了AQS源码)
-
里面就用到了自旋CAS吗,Java里面有没有其他优化(没懂,后来面试官说了CLR锁),然后答完面试官说也不是很细呀 :(
二面:3.12-52min
这次提前开了录音
-
自我介绍(说了两个项目,说自己JVM和并发比较熟)
-
项目里面共享session怎么实现的
-
项目里通用权限系统怎么设计的,用在了哪写地方
-
Spring AOP改善日志输出的背景,详细问了一下项目里面怎么用的AOP
-
项目做完收获和挑战比较大的点
-
HashMap原理,1.7、1.8区别
-
HashMap如果自定义Key的话,要注意什么(hashCode和equals),具体Key是怎么判断的
-
CAS原理、CAS存在的问题
-
线程池参数、什么时候会创建一个线程、什么时候会丢弃任务
-
ThreadLocal是什么,底层实现原理是什么
-
一个对象什么时候会进入老年代
-
浏览器输入url请求过程
-
七层网络协议都有什么,都起的什么作用
-
TCP拥塞控制的手段
-
TCP四次挥手的过程,客户端和服务端分别处于什么状态
-
数据库事务的隔离级别、分别解决了哪写问题
-
聚簇索引是什么、有什么用
-
数据库表设计的三个范式介绍一下、按第三范式设计有什么好处
-
算法:RMB组合:有如下RMB 面额, 1,5,10,20,给定一个RMB总额,打印出所有的组合方案(不同人民币使用的次数),比如输入15,打印{15, 0, 0, 0}{0, 3, 0, 0} {0, 1, 1, 0} (说了第一反应可以用回溯写,应该也可以用dp,面试官听到说就让我用回溯写,然后我就没去想dp怎么处理输入,直接用回溯写了)
-
自我评价一下优缺点,技术上和性格上
-
老师和同学对我的评价
二面完好久没回复,以为凉了,问了hr,说过了,准备约谈薪然后等到18号来电话了。只给两天时间考虑。接了。
全部评论
(13) 回帖