【直通BAT】BAT后端开发36题:Redis、Nosql、Mysql、秒杀题目!含面试经验总结!(优知学院公众号)

BAT一面:java高级和算法

java高级内容:

  1. 你对集合那么熟悉,看过哪些源码?HashMap,HashTable,ConcurrentHashMap等等

  2. 讲到ArrayList,讲一下初始长度,扩容机制。

  3. 说一下ArrayList和LinkedList区别

  4. 大量数据下在LinkedList前1/10处插入效率高,在ArrayList中部以及后部插入效率高,解释原因。

  5. JAVA的jvm:内存模型、分代的介绍、每个代的操作,gc算法。

  6. 类加载器、双亲委派模型、双亲实现,反双亲设计,类隔离。

  7. hashmap实现、concurrenthashmap实现、读取时不加锁是因为使用了volatile关键字。long类型作为value存取的加锁,把long也使用分段锁进行加锁。

  8. volatile实现,锁分类介绍、AQS介绍、公平锁非公平锁介绍。

  9. 并发、并发中的threadlocal介绍有,原理。

  10. NIO和BIO的区别。

  11. spring的AOP和IOC

算法

  1. 对冒泡与快排的改进。

  2. 二分查找,与变种二分查找。

  3. 二叉树、B+树、AVL树、红黑树、哈夫曼树。

  4. 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。

BAT二面:性能调优和缓存

  1. java gc 算法 垃圾收集器 分代 分区 参数配置

  2. Minor GC与Full GC分别在什么时候发生?

  3. 几种常用的内存调试工具:jmap、jstack、jconsole。

  4. java8新特性

  5. concurrenthashmap

  6. redis数据结构

  7. redis线程模型

  8. redis数据淘汰机制

  9. 读过redis源码吗?

  10. 事务的四个特性

  11. mysql实现事务的原理(MVCC)

  12. aop事务的隔离级别和传播特性

  13. http请求头有哪些

  14. 三次握手中为什么不是两次?为什么不是四次?

BAT三面:高并发项目

  1. 具体的秒杀细节怎么做的?秒杀的核心技术在哪儿?你怎么保证的?

  2. 超卖怎么解决?讲一讲spring的事务特性

BAT面试总结:

基础好+项目经验充分+良好的综合素质=好的Offer

如果你基础好,项目经验足,同时准备充分,那么你拿到offer的概率就会比较高;相反,如果你准备不充分,基础也不好,那么你拿到offer的概率就会比较低,但是你可以多投几家公司,这样拿到offer的几率就要大一点,因为你总有运气好的时候。所以,不要惧怕面试,刚开始失败了没什么的,多投多尝试,面多了你就自然能成面霸了。得失心也不要太重,最后每个人都会有offer的。

基础这东西,各个公司都很看重,尤其是BAT这种大公司,他们看中人的潜力,他们舍得花精力去培养,所以基础是重中之重。之前很多人问我,项目经历少怎么办,那就去打牢基础,当你的基础好的发指的时候,你的其他东西都不重要了。

基础无外乎几部分:语言(C/C++或java),操作系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域。

项目经验:

面试官最喜欢问如下三个问题:

1. 你的最有技术挑战的项目是什么,你扮演的角色?

2. 你在项目中遇到的最大的困难是什么,怎么解决的?

3. 如果给你一个高并发场景,比如:秒杀、抢购(高并发项目)、你来讲讲你的设计思路。

良好的综合素质:

什么是好的综合素质,就是在面试过程中,良好的礼节、流畅的表达、积极的交流。很多公司不光看你的技术水平怎么样,而更看重的是你这个人怎么样的。所以在面试过程中,请保持诚信、积极、乐观、幽默,这样更容易得到公司青睐。

猜你喜欢

转载自blog.csdn.net/zj15527620802/article/details/83323599