【一面挂】小米 自动驾驶 后端开发 日常实习 一面凉经

今天又是积累一面凉经的一天,不过昨晚上睡晚了,没睡好,今天确实状态不行

总体流程

  • 2022.7.6 投递简历(boss上投的,之前不知道是自动驾驶的)
    • 然后火速约了面试,因为之前有了面试,所以约在下周二(2022.7.12)下午
  • 2022.7.12 14:00 一面
    • 此后一周多没消息,应该是凉凉啦
  • 2022.11.11 10:48 感谢信
    • 我面试完整整4个月才发感谢信,你一周不给我结果我也知道是挂了,我早都去别家了,要不要这么恶心人吧?

一面(50min)

面试官给人比较严肃的感觉,还说了下纪律(不要切屏等等,我咋会不知道呢)

自我介绍

八股/项目(40min)

  • 除了mysql,还了解什么数据库?
    • 非关系型数据库,redis
    • 作死之路正式开始
  • 为什么要做RPC?RPC在什么情况下会用到?
    • 八股文
  • protobuf和json相比,作为序列化方式的好处?
    • 八股文
  • 你实现这个RPC框架,是为了提升性能吗?
    • 侧重功能实现,还没压测
  • 怎么衡量RPC框架的性能?
    • 并发量、qps
    • 内存资源占用?
  • HTTP和RPC的区别
    • RPC是一个完整的远程调用方案,HTTP只是个应用层协议
    • grpc用的http2,但是其他RPC框架一般都用自定义的协议
  • 为什么要使用自定义协议?这比常见RPC框架的通信协议好在哪?
  • 知道SQL注入吗?
    • 说了下概念
  • 服务端怎么解决SQL注入?
    • 八股文
    • 麻了,失去记忆了,也想不出来
    • 只说了服务端的输入校验(例如正则表达式),不要拼接sql,但是又继续深挖
  • 什么是线程安全?
    • 解释了概念,解释的有点模糊
  • STL有什么容器是线程安全的吗?
    • 并没有
  • vector为什么不是线程安全的?让举个例子
    • 就说如果涉及到任何更改容器的操作,都可能发生线程不安全的问题
    • 说(编)了一些,但是面试官没信服
  • 怎么解决这个问题?
    • 加互斥锁
    • 其实还有别的方法,同学被问到过,赶紧复习一波
  • 互斥锁、条件变量、读写锁的区别(感觉是高频问题)
    • 八股文
  • 互斥锁的底层实现
    • 布尔值,0表示没锁,1表示锁上了
    • 扯了下test and set等原子指令(TSL)
    • 如果发现是锁上的,就让内核调度另一个线程,当前的线程就先停下了
    • (说的过程中还因为电脑没电,掉线了,凉上加凉)
  • C++怎么使用互斥锁
    • C++11提供了mutex,加锁的话可以用 lock_guardunique_lock 实现自动加锁和释放锁
  • 知道 shared_mutex
    • 不知道(C++17的特性,确实没用过)
  • MySQL的索引是什么数据结构?怎么查找的
    • B+树,八股文
  • MySQL怎么查看SQL语句是否走了索引?
    • 通过 explain 命令查看
  • like能走索引吗?
    • 要符合最左前缀原则。如果左边是具体的,右边是通配符,才可以
    • 如果最左边是通配符,右边是具体的,最少也得扫描整个二级索引
  • 很常见的一个场景是手机尾号匹配,这肯定是最左边是通配符,右边是具体的那种情况,这种应该怎么才会让它走索引?
    • 八股文,可以多增加一列,倒序存储
  • mysql的undo log和binlog的用途
    • 八股文
  • 知道mysql的读写分离吗?
    • 不清楚
    • 麻了,赶紧看八股文
  • redis的事务?是否支持回滚?
    • 不支持,不支持原子性
    • 通过multi开启事务,打包一系列命令,通过exec执行
    • 这里面的多个命令并不是原子的,单条命令才是
    • 总之不太好用
  • redis缓存数据和mysql数据库数据的一致性
    • 先更新数据库,再删除缓存(旁路缓存模式)
  • 知道redis的延迟双写吗?
    • 不知道
    • 麻了,赶紧看八股文

算法题(10min)

牛客,核心代码模式

  • 跳跃游戏2(LeetCode 45
    • 说了下贪心的思路(差点想不出来,然后我就说想一会,实际上是组织语言)
    • 然后问,感觉这个思路不好想(可能是被看穿了做过了),就问,能用动态规划吗?
    • 我就说,可以是可以,但是一般来说,贪心法的问题,用动态规划解决,可能时间复杂度会较高
    • 然后问贪心法的时间复杂度(O(n)O(n)
    • 然后让我写代码(吓死,还以为让写动态规划,不知道啊),说10min能搞定吗
    • 我说,看情况吧
    • 结果不到5min,秒过

反问

  • 投之前不知道是自动驾驶的,想了解部门的做的业务,编程语言
    • 有很多数据要处理,主要python,少量C++
  • 还有什么技术栈吗?
    • 挺多的,有mongodb,es等等(感觉这个部门偏crud,所以主要问数据库)
  • 怎么培养实习生?
    • (面试官说了,我略了)
    • 23届没hc了,24届的话还有hc,如果能实习满3个月,可以提出转正
    • 麻了,24届战役这就打响了?今年形势太差,已经预料到明年是啥结果了

总结

挖出了很多不会的点,八股没背熟的地方,尤其是数据库这块。我数据库这块确实掌握的不行(不是我主攻的内容),相比os、计网。(果真,一问到数据库,我就被问穿了)

算是说不知道、不清楚,最多的一次面试,就当作查漏补缺吧

#日常实习##后端开发##小米、##C++#
全部评论
bettygirl yyds!!
2 回复 分享
发布于 2022-07-22 16:09
24就能提出转正了?
1 回复 分享
发布于 2022-07-22 07:08
大佬 八股文是啥呀😥
3 回复 分享
发布于 2022-07-22 02:28
要求这么高吗
点赞 回复 分享
发布于 2022-10-31 17:36 吉林
八股文可以分享吗😄
点赞 回复 分享
发布于 2022-07-24 08:04
欢迎投递zoom😁,我的帖子有内推链接
点赞 回复 分享
发布于 2022-07-22 07:26

相关推荐

上周组里招人,我面了六个候选人,回来跟同事吃饭的时候聊起一个让我挺感慨的现象。前三个候选人,算法题写得都不错。第一道二分查找,五分钟之内给出解法,边界条件也处理得干净。第二道动态规划,状态转移方程写对了,空间复杂度也优化了一版。我翻他们的简历,力扣刷题量都在300以上。后三个呢,就有点参差不齐了。有的边界条件没处理好,有的直接说这道题没刷过能不能换个思路讲讲。其中有一个女生,我印象特别深——她拿到题之后没有马上写,而是先问我:“面试官,我能先跟你确认一下我对题目的理解吗?”然后她把自己的思路讲了一遍,虽然最后代码写得不是最优解,但整个沟通过程非常顺畅。这个女生的代码不是最优的,但当我问她“如果这里是线上环境,你会怎么设计’的时候,她给我讲了一套完整的方案——异常怎么处理、日志怎么打、怎么平滑发布。她对这是之前在实习的时候踩过的坑。”我在想LeetCode到底在筛选什么?我自己的经历可能有点代表性。我当年校招的时候,也是刷了三百多道题才敢去面试。那时候大家都刷,你不刷就过不了笔试关。后来工作了,前三年基本没再打开过力扣。真正干活的时候,没人让你写反转链表,也没人让你手撕红黑树。更多的是:这个接口为什么慢了、那个服务为什么OOM了、线上数据对不上了得排查一下。所以后来我当面试官,慢慢调整了自己的评判标准。算法题我还会出,但目的变了。我出算法题,不是想看你能不能背出最优解。而是想看你拿到一个陌生问题的时候,是怎么思考的。你会先理清题意吗?你会主动问边界条件吗?你想不出来的时候会怎么办?你写出来的代码,变量命名乱不乱、结构清不清楚?这些才是工作中真正用得到的能力。LeetCode是一个工具,不是目的。它帮你熟悉数据结构和常见算法思路,这没问题。但如果你刷了三百道题,却说不清楚自己的项目解决了什么问题、遇到了什么困难、你是怎么解决的,那这三百道题可能真的白刷了。所以还要不要刷LeetCode?要刷,但别只刷题。刷题的时候,多问自己几个为什么:为什么用这个数据结构?为什么这个解法比那个好?如果换个条件,解法还成立吗?把刷题当成锻炼思维的方式,而不是背答案的任务。毕竟面试官想看到的,从来不是一台背题机器,而是一个能解决问题的人。
牛客51274894...:意思是光刷力扣还不够卷
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
10
61
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务