一线城市由于限车油牌,很多我身边的朋友,买的第一辆车都是电车,基本上人均特斯拉。国内也有很多优秀的新能源车企,理想、小鹏、比亚迪、蔚来等等,最近小米也入局这个赛道。
这些新能源车企中,发现理想的校招薪资特别高,不少拿到理想汽车开发岗 offer 的同学跟我反馈开到了 30-35k x 14(总包 40-50w),比互联网大厂都多很多,问我要不要接?
算法岗更是离谱,都接近 40k 了(总包 55w+)。
看了下理想的财报才知道,原来理想汽车 2023 的销售非常好,所以在开发岗位上扩招了很多,同时给校招生开的薪资非常的给力。
话说回来,理想开这么高薪资,面试难度如何呢?
之前分享了很多互联网公司后端面经,这次给大家分享一位同学面试理想汽车的Java 后端面经,这个面经还是比较经典,基本后端的知识都问了遍。
我也把问到的知识点,罗列了一下
-
Java:线程池、垃圾回收、juc、spring aop
-
MySQL:索引失效
-
Redis:缓存三兄弟、布隆过滤器
-
Kafka:topic、分区、消费线程的关系
-
操作系统:线程间通信、socket 编程
-
网络:访问网站到显示的全流程
MySQL
索引失效的场景知道哪些?
对索引使用左或者左右模糊匹配,会索引失效
当我们使用左或者左右模糊匹配的时候,也就是 like %xx
或者 like %xx%
这两种方式都会造成索引失效。
比如下面的 like 语句,查询 name 后缀为「林」的用户,执行计划中的 type=ALL 就代表了全表扫描,而没有走索引。
// name 字段为二级索引
select * from t_user where name like '%林';
对索引使用函数,会索引失效
有时候我们会用一些 MySQL 自带的函数来得到我们想要的结果,这时候要注意了,如果查询条件中对索引字段使用函数,就会导致索引失效。
比如下面这条语句查询条件中对 name 字段使用了 LENGTH 函数,执行计划中的 type=ALL,代表了全表扫描:
// name 为二级索引
select * from t_user where length(name)=6;
对索引进行表达式计算,会索引失效
在查询条件中对索引进行表达式计算,也是无法走索引的。
比如,下面这条查询语句,执行计划中 type = ALL,说明是通过全表扫描的方式查询数据的:
explain select * from t_user where id + 1 = 10;
对索引隐式类型转换,会索引失效
如果索引字段是字符串类型,但是在条件查询中,输入的参数是整型的话,你会在执行计划的结果发现这条语句会走全表扫描。
我在原本的 t_user 表增加了 phone 字段,是二级索引且类型是 varchar。
图片
然后我在条件查询中,用整型作为输入参数,此时执行计划中 type = ALL,所以是通过全表扫描来查询数据的。
select * from t_user where phone = 1300000001;
这是因为 phone 字段为字符串,所以 MySQL 要会自动把字符串转为数字,所以这条语句相当于:
select * from t_user where CAST(phone AS signed int) = 1300000001;
可以看到,CAST 函数是作用在了 phone 字段,而 phone 字段是索引,也就是对索引使用了函数!而前面我们也说了,对索引使用函数是会导致索引失效的
联合索引非最左匹配,会索引失效
联合索引要能正确使用需要遵循最左匹配原则,也就是按照最左优先的方式进行索引的匹配。
比如,如果创建了一个 (a, b, c)
联合索引,如果