腾讯CDG运营开发一面。第一次面试,在牛客网,1个小时17分钟。
- 先自我介绍一下
- 第二个项目一些功能实现的问题
- 电商项目中秒杀系统实现流程,怎么解决超卖(答redisson分布式信号量)
- redisson信号量底层原理(答lua脚本),lua脚本怎么保证原子性(不会)
- redis持久化(提到了RDB持久化笨重会丢失数据,AOF实时性强一点但也会丢失数据)
- redis持久化消息时宕机了导致分布式信号量没来得及持久化,恢复后信号量的值数据不一致怎么解决(想了一会,面试官提示消息队列,就回答了redis恢复后将数据和消息队列的持久化进行比较)
- redis基本数据类型(中途在zset答了跳表),跳表怎么实现的(说了底层数据结构list, node, level,查找过程)
- JVM运行时数据区介绍一下
- JVM哪些东西是线程独享的(PC计数器,Java虚拟机栈所有)
- JVM堆中的划分,比例(8:1:1),为什么(答复制算法效率高,大部分对象存活时间短,所以survivor占比较少)
- JVM怎么判断哪些对象需要回收(可达性分析,GC Roots)
- JUC有看过源码吗?synchronized和ReentrantLock区别(重量级锁底层实现不一样,公平锁和非公平锁实现)
- 公平锁和非公平锁哪个效率高?(这个想了一会,答了非公平锁,公平锁把当前线程直接放队列,非公平锁cas成功就获得锁,少了几次线程切换,解释到中途面试官就打断了,继续问)
- MySQL怎么查看是否用到索引(explain,type和索引长度可以判断索引使用情况)
- MySQL事务隔离级别(提到RR解决幻读问题)
- RR真的解决了幻读问题吗?(心里一惊,毕竟这个问题众说纷纭,我答了MVCC快照读的解决和当前读next-key lock解决,举了个例子。想问问大家RR是否真的解决了幻读问题?)
- 你有竞赛背景啊,平时怎么刷题的?做一道简单点的题吧,大数加法(问了时间,给15分钟)
最后敲代码,第一次敲代码被别人一直盯着,紧张死了。花了7分钟敲完然后运行,结果因写错个变量名编译没过,debug了2分钟... 后来运行又有各种问题(前面敲的时候脑子一片空白,写了很多bug),于是先把注释码上缓解一下尴尬。之后进行了10分钟的调试,最终运行成功。
最后:你有什么想问我的?
- 我还有希望吗...(当时真的绝望,有竞赛背景结果代码写的如此狼狈...)
- 如果能成功入职,我还需要补充哪些知识?
今早起来一看,挂了...
全部评论
(5) 回帖