前言
首先,本人是一个留学生,所以我有着和大多数留学生一样通病:对国内招聘环境/时间的不熟悉,整体知识体系不了解,海外院校不怎么流行实践性/工业性知识(也缺乏比较多的实操课,很多人不了解比如流行框架等,所以很多国内面试官会觉得留学生基础弱),当然也可能只是我的问题,而非留学生通病。总而言之,因为这些原因我刚开始的面试路可以说是完全磕磕绊绊,屡屡碰壁到自信心匮乏,而甚至不愿意再去面试,到后面通过女友的鼓励、重新振作,总结知识点,查漏补缺,不断面试,最终斩获上述offer。
另外我这里为大家准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中),有需要的朋友点击这里备注csdn,自行下载!希望大家都能找到心仪的工作!
美团一面面经
-
说一下数据库事务,事务的ACID
-
数据库的事务是怎么实现的
-
redo记录
-
说一下代理模式
-
说一下动态代理
-
说一下CAS
-
用过undo redo嘛
-
数据库的索引结构,给你一张表你怎么去设计索引
-
数据库慢查询怎么排查和解决问题
-
常用的设计模式知道哪些
-
说一下JVM的内存模型
-
一个对象从最开始创建到使用到销毁,有哪几个过程,分别是在哪里执行的这些过程
-
算法题:链表相加
美团二面面经
-
数据库隔离级别
-
怎么解决幻读的?间隙锁和MVCC的实现原理
-
当前读和快照读的区别
-
TCP和UDP的区别
-
知道TCP的粘包问题嘛?怎么解决
-
LRU缓存设计,你会怎么设计数据结构
-
LFU实现,你会怎么做
-
map有哪些,除了linkedHashMap
-
TreeMap和HashMap的区别,TreeMap插入的时间复杂度
-
算法题:回文子串的个数 LeetCode 647
美团三面面经
-
HTTP请求头里面有什么内容
-
HTTP1.1和HTTP1.0 HTTP2.0有什么区别
-
Unicode和UTF-8的区别
-
说一下类加载器,为什么需要这么多类加载器,为了保证类的唯一性的话直接定义一个final类型的类加载器不好嘛?
-
三次握手
-
对中间件的理解
-
公平锁和非公平锁
-
事务隔离级别
-
通俗易懂的用两分钟给我讲一下你最近学的最好的知识点
-
算法题:数字转换 12345
-
转换成"一万二千三百四十五"
-
还有很多记不清楚了,面试官一直在探测知识的广度。。不会就马上下一个
腾讯面经
-
问项目,项目中解决了什么问题
-
怎么设计数据库表,怎么去设计索引,加索引的时候需要注意些什么
-
会Linux命令嘛(不会),我们现在的地方都是一键部署,那你怎么看服务有没有启动起来?
-
看日志,看服务是否能调通
-
如果没有日志呢?怎么去排查问题。。应该就是要进入到Linux系统里面去看线程之类的?堡垒机
-
你说一下spring的启动过程,说一下它处理服务的过程
-
说了SpringMVC 从dispatcherServlet到HandlerMapping到HandlerAdapter,那你说一下HandlerAdapter的实现过程(不会)
-
什么时候Mysql会有慢查询?你写的sql有过慢查询嘛?
-
算法题,说思路:
-
计算两个64位长整形的汉明距离,先转换成二进制,然后求异或,最后用n&(n-1)求出不为0的个数
-
1-10亿的数,少一个求少的那个数字
-
最后的答案是,求和,然后用等差数列求和公式去计算结果,减去求和之后的结果得到的数字就是缺少的数字
阿里面经:
-
项目,在实习过程中做了什么工作
-
Spring怎么解决循环依赖
-
利用三级缓存实现的
-
覆盖索引是什么
-
最左匹配原则
-
说一下NIO
-
select、poll、epoll的区别
-
1000万个数据的B+树有多高
-
分析:首先每个innoDB的页的大小为16KB,如果主键为int类型就是4字节,同时指向下一节点的指针也会占用6字节;如果主键为bigInt型,占用的长度为8字节 16k/14 = 1170,则一层的节点个数为1170.
-
同时可以计算叶子结点存放的数据的个数:如果一条数据为1kb,则可以存放16条数据
-
一颗高度为2的B+树可以存放 1170*16条数据
-
一颗高度为3的B+树可以存放 1170117016 =2000w条数据
-
所以b+树的高度一般为1~3层
-
redis的数据结构
-
说一下跳表的数据结构
-
hashmap1.7和1.8的区别,红黑树的插入的时间复杂度
-
问项目。。。记不太清了
-
全程电话面,而且都是突击面试,感觉就很多问题记不太清
滴滴 一面
-
算法题
-
10个大文件,每个文件1000万行整型数据,排序,排序后第一个文件为1-1000万大的数字,第二个文件为1000万-2000万大的数字,依次类推,内存限制为32M,文件中的数字不重复(口述)
-
方法,采用归并,32M可以存放的数字为800w,所以要把文件拆分为小文件,可以考虑拆分成500w大小的文件,分别在内存中进行排序,可以考虑快排。然后对20个小文件直接进行归并,找到前1000w大的数字放入第一个文件。以此类推
-
问项目:项目里面的限流是怎么做的?
-
写的注解,针对于接口进行限流
-
如果要针对于每一个业务针对性的进行限流应该怎么做
-
问基础:
-
三次握手四次挥手
-
如果四次挥手中的第三次挥手时,客户端的进程被杀死了怎么办?
-
数据库隔离级别
-
线程进程
-
线程通信
-
进程通信
滴滴二面
-
算法题:大数据里面有很多个字符串(有重复),怎么判断字符串中是否包含某一个给定的字符串(口述)
-
可以对字符串进行hash,将hash值模10,分成10个小部分,如果还是太大,可以再进行此次操作。直到每个小部分能够存进hashmap中,这里可以去重,因为hashmap查找key的时间复杂度为o(1),所以可以对给定字符串进行上述操作之后看hashmap是否包含上面的字符串
-
Spring 的特性?IOC AOP
-
AOP的执行过程?
-
注解的分类?
-
注解是编译时起作用还是运行时起作用?
-
mysql了解哪些?
-
myisam和innodb的区别
-
说一下聚簇索引和非聚簇索引(没答好)
-
在实习中学到了什么?
-
怎么去测试自己写的接口,从哪些方面去考虑?
-
先进行顺序测试,就是把流程跑通
-
然后再进行逆向流程,测试一些可能出错的地方
-
从项目中学到了什么
-
SpringMVC中controller层是干嘛的?(不知道)
滴滴三面
- 全程项目,在项目中负责什么部分,从项目中学到了什么。
总结
最后我为大家准备了Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
任何时候都需要你能够主动地去学习,面试也要提前做准备。如果你的职业发展有更长远的打算和规划,那就更应该沉稳下来,脚踏实地,一步一步。
有需要的朋友点击这里备注csdn,自行下载!