最近同行去腾讯面试了,并且顺利拿到了Offer,下面是他反馈过来的问题,看看你能答出来多少?
一面:
Linux进程间通信的方式
Linux里用来查看CPU状态都有哪些指令?
进程和线程有什么区别?进程之间的通信方式有哪些?线程呢?
什么是死锁,如何避免死锁,死锁和饥饿有什么关系?可以给我手写一个产生饥饿的情况吗?如何避免死锁,银行家算法知道吗?
Synchronized和reentrylock有什么区别?
介绍一下JavaGC
介绍一下Java的内存模型
什么是递归?有哪些方法可以替代递归?
链表和数组有什么区别?
介绍一下堆,栈。堆排序的流程是怎么样的?
TCP三次握手和四次挥手,挥手时各个时刻的状态是什么?
Post和Get有什么区别?HTTP中的flag字段都有哪些?
算法:
1、 最大递增子序列
2、 数组中只有一个元素出现了两次,其他的元素都只出现一次。找出这个只出现了一次的元素
3、 给100张牌,两个人轮流摸,每次取出1-5张牌,你先摸,有没有办法保证你必然可以摸到最后一张?
二面:
聊了聊项目。你用了redis,那你介绍一下redis有哪些过期策略?
怎么设置一个key的过期时间?
redis中的哈希槽你知道吧?
那他和一致性哈希有什么区别呢?
一致性哈希里的虚拟节点是什么?
你用了分布式锁,那分布式锁有哪些实现方式?都有哪些优缺点?
三面:
对项目作了比较深入的探讨吧,为什么要用缓存呢?
为什么MySQL不能支撑高并发,你有做过测试吗?
你说你对Redis过压测,那Redis的QPS大概有多少?
你说复杂查询比简单查询的速度快,有没有想过为什么?
你这个项目的QPS有多少?
具体一点,读的QPS有多少,写的QPS有多少?
你知道Redis都有哪些坑吗?
反正问了一堆问题,为什么这里要这么设计,都有什么问题。
接着又聊了第二个项目,给我说说孤立森林呗,为什么你们要用Spark不用Storm啊?
总之大家一定要对自己的项目很清楚才行。
欢迎大家关注我的公众号(在右侧),免费分享教程和源码。
(责任编辑:admin)