工作10年,秋招面试600人想进阿里的同学,总结出的154道面试题
很多同学想进大厂,特别是刚毕业的,以及工作年限短的,不要有任何侥幸心理,踏踏实实的把基础弄扎实了,这是你通往高薪之路的唯一正确姿势。
今年,优知学院将帮助更多同学进大厂,首先从面试题做起~
好了,不多说了,直接上正菜。
01 Mysql
-
数据库三范式及判断、E-R图
-
innodb和myisam存储引擎的区别
-
索引分类(主键、唯一索引、全文索引、覆盖索引等等),最左前缀原则,哪些条件无法使用索引
-
B树、B+树区别,索引为何使用B+树
-
聚集索引与非聚集索引(使用非聚集索引的查询过程)
-
事务的ACID(原子性、一致性、隔离性、持久性)
-
事务隔离级别和各自存在的问题(脏读、不可重复读、幻读)和解决方式(间隙锁及MVCC)
-
乐观锁和悲观锁、行锁与表锁、共享锁与排他锁(inndob如何手动加共享锁与排他锁)
-
MVCC(增加两个版本号)及delete、update、select时的具体控制
-
死锁判定原理和具体场景
-
查询缓慢和解决方式(explain、慢查询日志、show profile等)
-
drop、truncate、delete区别
13.查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序
-
mysql优化,读写分离、主从复制
-
数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)
02 Redis
- Redis如何做高可用、集群
2.Redis和Memcached的优劣势比较
3.Redis的数据存储类型有哪些?
4.Redis的应用场景有哪些?
- Redis的持久化方式,以及项目中用的哪种
6.Redis的缓存雪崩怎么解决?
7.Redis与数据库MySQL的双写一致如何解决?
8.Redis的缓存穿透怎么解决?
03 计算机网络
-
OSI七层协议、TCP/IP四层协议
-
各层对应的网络设备(路由器、交换机、网关、网桥、集线器等等),各层对应的协议
-
数据链路层的CSMA/CD协议,笔试可能会用到
-
IP地址分类,子网划分(笔试常用)
-
TCP和UDP的区别
-
TCP三次握手和四次挥手,为什么三次握手,为什么四次挥手
-
TCP精髓问题:停止等待协议、连续ARQ协议、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复)
-
HTTP状态码
-
HTTP缓存机制(cache-control、Expires之类的一系列请求与相应报头字段)
-
session和cookie的区别,禁用cookie后怎么办
-
DNS解析的过程
-
常用协议的端口
04 数据结构与算法
-
数组、链表(单向、双向、双端)、栈和队列、二叉树、红黑树、哈希表、堆(最大和最小)
-
个人经验:栈和队列、哈希表、链表、二叉树的题较多,图的较少
-
查找:二分查找及其变形
-
二叉树:前序、中序、后序遍历,按规定方式打印,两个节点之间操作(最近公共祖先、距离)等问题。
-
最大堆和最小堆:大数量级数据找最大几个等问题、堆如何调整等问题。
-
栈和队列:经常作为算法题要用到的数据结构
-
八大排序:3个简单的:冒泡、选择、插入及其优化,5个高级的:快速排序、归并排序、堆排序、希尔排序、桶排序(快排、归并、堆很重要)
8.手写堆排序
- 给阿里2万多名员工按年龄排序应该选择哪个算法?
05 Linux
-
常用命令:用户控制、权限控制、进程控制、系统状态查询之类的
-
/etc/hosts文件什么做用?
3 Linux目录结构(尤其是/proc非常重要)
-
linux文件系统结构和启动流程)
-
Java服务端问题排查(OOM,CPU高,Load高,类冲突)
-
如何查看Java应用的线程信息
7.Thread dump文件如何分析(Runnable,锁,代码栈,操作系统线程ID关联)
06 操作系统
-
一个二进制文件运行出结果,操作系统做了什么(这是一个很全面的题)
-
死锁的条件及银行家算法、资源分配图之类的
-
进程间通信方式
-
linux的五种IO方式(阻塞与非阻塞、同步与异步的理解)
-
linux的select、poll、epoll的区别
-
进程与线程区别、内核级线程与用户级线程
-
页面置换算法,尤其是lru
-
进程调度算法
-
linux中断响应机制
-
虚拟内存机制
08 Java编程
-
谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解
-
volatile的原理
-
java线程的状态及相互转换
-
线程同步的几种方式和线程间通信
-
ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?
-
HashMap实现原理,如何保证HashMap的线程安全
-
ReentrantLock的内部实现?
-
JVM的垃圾回收机制,以及回收算法有哪些?
-
JVM什么时候会触发YGC,什么时候触发FGC?
10.JVM如何内存调优、内存泄漏如何排查
-
Spring框架中IOC的原理是什么?
-
用Spring如何实现一个切面?
-
死锁的四个必要条件?
14.常见的设计模式、手写一个单例、JDK、Spring原理里有哪些采用了设计模式。
15.多线程与高并发的关系和区别
16.常见的高并发场景有哪些,对应的架构设计方案是什么。
17.介绍完整的分布式中间件有哪些,各自的应用场景和作用。
18.双11秒杀活动,你的技术架构设计思路。
以上面试题答案,大部分已经涵盖在以下81个Java面试必考点中,理解不透彻的强烈建议认真学3遍。
为应对一线大厂面试,我做了哪些准备?
(一)调整自己的心态,正确面对得失
面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。
(二)提升技术,扩宽知识
对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?
以下是我个人的一些做法,希望可以给各位提供一些帮助:
- 21天啃完283页的pdf文档
**Java部分:**Java基础,集合,并发,多线程,JVM,设计模式
**数据结构算法:**Java算法,数据结构
**开源框架部分:**Spring,MyBatis,MVC,netty,tomcat
**分布式部分:**架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
**微服务部分:**SpringBoot,SpringCloud,Dubbo,Docker
- 实战系列:Spring全家桶+Redis等
- 其他相关的电子书:源码+调优
(三)刷题
如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。
以下是我私藏的面试题库:
结束语
对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
以上内容中所有的学习资料、面试资料,均可以免费提供,希望大家金三银四面试顺利,拿下自己心仪的offer!
需要的朋友:直接点击文档窗口(https://jq.qq.com/?_wv=1027&k=gLUIIwrn)免费领取~
欢迎关注专栏:Java架构进阶团。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。