留学归来!我拿到了美团,阿里,腾讯等一线名企offer,分享一下我的面试经验!

前言

首先,本人是一个留学生,所以我有着和大多数留学生一样通病:对国内招聘环境/时间的不熟悉,整体知识体系不了解,海外院校不怎么流行实践性/工业性知识(也缺乏比较多的实操课,很多人不了解比如流行框架等,所以很多国内面试官会觉得留学生基础弱),当然也可能只是我的问题,而非留学生通病。总而言之,因为这些原因我刚开始的面试路可以说是完全磕磕绊绊,屡屡碰壁到自信心匮乏,而甚至不愿意再去面试,到后面通过女友的鼓励、重新振作,总结知识点,查漏补缺,不断面试,最终斩获上述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,自行下载

猜你喜欢

转载自blog.csdn.net/weixin_53170315/article/details/114022991