1. 自我介绍
2. 笔试复盘,第四题:平滑值;问:当时没有全部做出来,超时了,笔试完之后有自己复盘再做过吗?答:没有,我当时用最暴力的思路写的;问:现在要你优化一下你会怎么做?然后我就问了一下题目之后,大概说出了优化思路,在面试官的引导下一步一步答出来了;差点以为要挂
3. 问项目,我的项目就是一个商城项目;问:查询订单怎么实现,怎么进行sql优化?具体:用户要从订单表中按时间顺序查询他最近的10个订单,说一下sql语句应该怎么写,怎么优化?答:select 要查询的具体数据(不能是*,不需要的数据不要查)from 订单表 where uid=用户id order by createTime limit 1, 10; 优化的话可以创建索引,开始说了一个根据uid创建,然后面试官引导说只是根据uid创建索引,我立马说创建 uid + createTime 的组合索引,createTime用时间戳存;
4. InnoDB引擎是怎么存储数据的?答:问了一下面试官是想问索引的存储还是什么,然后说了InnoDB是聚簇索引,主索引和数据页是存储在一个文件中的;后来查了一下InnoDB是通过页来存储数据的;这个地方没答好
5. 项目中遇到的难点,怎么解决的;
6. 用到了Redis,你了解哪些Redis数据类型,用到了哪些,你项目中Redis查询,更新,删除数据的过程;答:了解zset,set,string,list,hash,bitmap这些,项目中只用到了string,Redis查询,更新,删除就是在service层加的redis缓冲层,后面答案基本网上都有,这里不细说了;
7. zset底层数据结构你了解吗?答:底层是用字典+跳跃表实现的,Redis是用C语言写的,里边实现了一个zset数据结构,包括字典和跳跃表两个指针...
8. java垃圾回收机制你了解吗,有哪些垃圾回收算法?从分代回收假说扯到了三种回收算法,再说了一下垃圾回收算法各自的优缺点,适用场景;
9. java垃圾回收时是把整个内存都扫描一遍吗还是?首先说了一下怎么定义垃圾,一种是引用计数法,另一种是可达性分析法,然后引用计数法不能解决循环引用的问题,可达性分析法是从GC root集合往下开始扫描;
10. 具体是怎么扫描的/标记的?答:根据引用链来对对象进行标记;
11. GC Root对象有哪些?答:常量指向的对象,虚拟机栈中局部变量指向的对象,本地方法栈中局部变量指向的对象...,没说全;
12. 平时是怎么学习的;
反问:
1. 被分配到的事业部?
校招先招进来,暂时不能确定是哪个事业部。
2. 那业务应该也不确定了吧?
很有可能是分配到面试官对应的部门,主要是做携程内部使用的工具开发,(那感情好)。
3. 技术栈?
和你们现在使用的差不多,除了一些公司内部的技术,原理都差不多。
#携程面试#