正文
分享一位读者投稿的携程校招 Java 岗位的面经。
下面是正文。
个人背景:双非本,机械专业转码。
携程在正式面试之前,会有一个性格测试(40分钟)。性格测试之后,大概过一周进行笔试。笔试之后,会邮件通知是否通过并预约第一轮面试时间。
普通 offer 一般只有两面,如果是 sp 或者 ssp 的话,技术面貌似是三面。
携程的面试难度一般,效率比较高,面试体验还是不错的。
一面(45min)
主要是问八股,难度较低。
- 自我介绍;
- 进程和线程的区别;
- 并行和并发的区别;
synchronized
的作用;
synchronized
和 ReentrantLock
的区别,如何选择;
ThreadLocal
使用过程中可能存在的问题(内存泄露);
ThreadLocal
内存泄露问题是怎么导致的;
- 项目中是如何创建线程池的,什么不用
Executors
去创建线程池;
- 知道的本地缓存,选择 Caffeine 的原因;
- Redis 这类缓存和 Caffeine 的区别;
- Redis 中常见的数据结构,应用场景;
- 缓存穿透和缓存雪崩的区别,解决办法;
- MySQL 和 Redis 怎么保持数据一致;
- 一个 SQL 笔试题,join 多表查询(共享屏幕)。
答案:
二面(50min)
二面主要还是八股。
- 自我介绍;
- 使用多线程可能存在的问题;
- 线程池原理;
- 聊聊
ThreadLocal
(概念+一些应用举例+常见的内存泄漏问题);
- JVM 内存模型和垃圾回收;
- 用到过内存分析工具吗;
- 使用索引能带来什么好处,你项目中是怎么使用的;
- 索引底层常见的数据结构,MyISAM 引擎和 InnoDB 引擎用的是哪种;
- 聚簇索引和非聚簇索引;
- 最左前缀匹配原则;
- 造成索引失效的常见原因你知道那些,项目中遇到过索引失效问题吗;
- 如果有一条 SQL 语句执行的很慢,如何进行优化;
- 项目中是如何使用 ES的;
- ES 检索比较快的原因,为什么 MySQL 不行;
- 讲一下倒排索引;
- 手写一个生产者消费者队列;
- 反问。
答案:
HR面
- 个人的基本信息;
- 对携程的了解;
- 三个词形容自己;
- 手里还有哪些 offer;
- 平时的兴趣爱好;
- 选择工作的理由排序(薪资、加班情况之类的)。
英语测评
HR 面之后,还会有一个英语测评,题目比较多,对英语不好的同学不太友好。题型大概是阅读、演讲、听力这些。
不过,也不用担心,应该不太会因为英语测评的表现刷掉你,但英语测评还是可能会对你的面试评价造成影响,能做好还是要尽量做到最好。