37互娱,JAVA服务端程序一面
2018.6.12 下午3点
1. 自我介绍,介绍项目
2. 你本科和研究生专业都不相关,那你是怎么学习的?看书。看了哪些书?
3. jvm内存模型介绍一下?
4. GC?聊了根搜索进行可达性分析,标记,finalize(),(拯救),清理;介绍了GC算法(复制、标记整理、标记清除)
5. 为什么年轻代要用复制算法?复制算法的优缺点?聊了下无碎片空间,内存浪费,内存担保
6. 并发,为什么要用多线程?多线程的好处?最大化利用CPU和CPU时间片
7. 怎么加锁?synchronized 锁方法和锁代码块和显示锁ReentrantLock(提了超时获取锁)
8. 不加锁会产生什么问题?读写顺序不一致,读到的不是想要的;
写了一半挂起,另一个线程写,然后挂起线程继续写,导致写错误(我也不知道对不对)
9. 死锁,为什么会造成死锁,怎么解决死锁?锁成环,超时获取锁
10. 锁的机制?聊了CPU锁总线和锁内存(修改内存地址,然后嗅探置缓存行无效,下次直接从内存中读取)。
发现好像答的不对,然后又讲了锁的升级(对象头的MarkWord,偏向锁、轻量级锁、重锁,没有获取成功会怎么样,自旋答成重锁自旋了)
11. MySQL你了解些什么?索引(聚簇、非聚簇、最左匹配),范式,explain,processlist指令,慢查询日志等
12. MySQL索引,为什么要建索引?怎么建索引?加快查询速度,where条件查询后面常用到的列建立索引
#面经##Java##三七互娱#