前言

为什么要进大厂?

进入大厂,意味拥有更高的薪资、优质的人脉以及令人羡慕的工作环境和福利待遇。以及最重要的成长,当然也有人会说,有大厂背景会容易找工作,这也算一点 ;这么多理由,进大厂他不香吗?

前段时间,有个朋友和说要去面试几次大厂,多积累点面试经验,等明年金三银四正式进军大厂

他这段时间面试频频遭拒,没想到临近年关居然拿到了大厂的offer

一问才知:面试阿里的时候,有位大佬看他态度不错,分享给他一份自己整理的面经,结果他只用了半个月就拿到了另一个大厂(网易)的offer(我都惊呆了)

面经(大厂面试题)

总体说一下集合框架

你怎么看待接口和抽象类

索引的分类

主键索引的设计应该采用B-tree索引还是hash索引

设计模式说5,6个

谈一谈DDD面向领域编程

说一下hibernate一级缓存和二级缓存

说一下你了解的MQ

谈一谈你对高并发的理解,你会从什么角度设计高并发程序

JUC包里的限流该怎么做到

索引不适用的条件

说一下NIO和AIO

AIO里用到什么设计模式

说一下select,poll,epoll

谈一下TCP的拥塞控制

你知道什么是as-if-serial语义吗,它和happen-before语义有什么区别

Executors创建线程池的方式

CachedThreadPool里面用的什么阻塞队列

那你知道LinkedTransferQueue吗,和SynchronousQueue有什么区别

你还知道什么阻塞队列,能具体说说它们的特点吗

线程池的线程数怎么设置比较好

你知道新出的LongAdder吗,和AtomicLong有什么区别

那你知道LongAccumulator吗

线程池的设计里体现了什么设计模式

说说你了解什么设计模式,知道责任链设计模式吗

wait/notify体现了什么设计模式

线程池7个参数

谈一下spring事务传播

谈一下IOC底层原理

怎么判断内存泄漏

怎么在日志里排查错误,该用哪些Linux命令

mysql原子性和持久性怎么保证

怎么解决幻读

innodb和myisam区别

索引分类

对象的创建过程

对象在内存中的存储布局

对象头具体包括什么

对象怎么定位

堆的划分

对象怎么分配

具体讲一下CMS流程

锁的四种状态

Object obj = new Object()这句话在内存里占用了多少内存

synchronized和reentrantLock的异同

synchrnoized和reentrantlock的底层实现及重入的底层原理

锁的四种状态及升级过程

CMS和G1的异同

G1什么时候引发Full GC

除了CAS,原子类,syn,Lock还有什么线程安全的方式

HashMap和Hashtable的异同

允许null键的map你知道哪些

null键放在HashMap的哪里

为什么hashtable的扩容是2倍+1

红黑树的插入时间复杂度

解决哈希冲突的方式

现有1T的数据,内存只有1G,该怎么对他们排序

Tomcat为什么要重写类加载器

tcp握手挥手过程及其状态转换

mysql隔离级别

B树和B+树的区别

你知道哪些设计模式,它们在JDK源码中是怎么体现的

Java运行时数据区

说一个最熟悉的垃圾回收算法

吞吐量优先和响应时间优先的回收器是哪些

类加载全过程

线程池7个参数

CAS的ABA问题怎么解决

Java内存模型

什么叫做阻塞队列的有界和***

cookie和session介绍一下

说一下反射,反射会影响性能吗

谈一下AQS吧

为什么你说AQS的底层是CAS+volatile

JUC包里的同步组件主要实现了AQS的哪些主要方法

ConcurrentHashMap底层原理

手写一个LRU

HashMap底层数据结构

为什么用红黑树不用普通的AVL树

为什么在8的时候链表变成树

为什么在6的时候从树退回链表

线程池7个参数,该怎么配置最好

说一下volatile

volatile的可见性和禁止指令重排序怎么实现的

CAS是什么

PriorityQueue底层是什么,初始容量是多少,扩容方式呢

HashMap的容量为什么要设置为2的次幂

你知道跳表吗,什么场景会用到

CopyOnWriteArrayList知道吗,迭代器支持fail-fast吗

innodb的底层数据结构

为什么用B+树不用B树

为什么用B+树不用红黑树

coding:无序数组怎么寻找第k大的数,写一个二叉树层次遍历

不知道大小的数据流取其中100个数,怎样的取法能最随机

n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小

假设百度每个页面能放100个网页,每个页面都有一个评分,怎样快速找到第8页的所有网页

进程间通信有哪些,请详细说明一下自己在哪种场景下用过哪种方式?

死锁是怎么产生的?说一下

Java中的线程有几种状态?

os中管道的实现

解释一下分段和分页

虚拟地址、逻辑地址、线性地址、物理地址的区别

协程和线程和进程的区别,你是怎样理解的?

为什么三次握手四次挥手?三次挥手可不可以?

OSI和TCP/IP的区别

http server服务,现在要做一个针对用户维度或者接口维度的频控,假设一秒100这种,问在不改变原有接口服务的情况下,你如何实现?

网络安全相关,csrf这种***如何防范

各种协议问我了解过没有,例如TCP/UDP/ICMP,这个问题比较常见

微服务和http服务的区别,你对两者是怎样理解的?

你自己使用MySQL中遇到过乱码问题没有,如何解决的,产生原因是什么?

Select * From table_name where filed_name != NULL 这个sql语句是什么意思,你觉得有没有问题?

关键字where和having的区别,说一下

介绍一下MySQL数据库引擎innodb,及MySQL的四种隔离级别

用过什么索引,使用这个索引有什么要注意的

数据的分库分表会产生什么问题,如何解决?

写一个sql语句,给表t_score 字段 id(int),score(varchar),team1_id(int),team2_id (int)

给表t_team 字段id(int),name(varchar),完成输出这种效果的语句(一条完成):id:xx,team1_name:中国,team2_name:日本,score:4:1

如何应对HR


总结

面试,并没有你想的那么难,很多人明明技术够了,但是却还是不敢去大厂面试,大厂除了问题难了一点也没什么,这里没面过还能去面下一个部门,或者下一家公司;心态很重要,在这里,希望大家能保持一个良好的心态,祝大家无论面哪家企业,都能拿offer;

上面的面试题小编都整理成了文档,限于篇幅原因,相关的答案没有放出来,有感兴趣的程序员朋友,可以帮忙转发文章后,关注私信回复【面试资料】来获取