面经汇总

整合了记录的大部分面试问题

字节一面

流程:自我介绍 → 项目拷打 → 代码(leetcode原题我还做过:( → 八股

期间穿插着问了职业规划,读研(?)

项目部分

让我介绍前后端的项目

  1. 简单介绍一下
  2. 项目结构,怎么分的包、服务
  3. 抓着一个具体业务狠狠拷打(订单业务)
    1. 下单流程
    2. 怎么解决多个人同时调用业务服务的情况(应该是想问怎么解决数据同步问题,我一直回答上锁,面试官一直问我怎么加锁,否定了我原项目的方案:(,锁加在哪,最后大概可能回答了个沾边答案?(加到数据库的元祖上?一直问我怎么落实到代码层面,最后觉得可能是数据库。。),由于我一直在讲悲观锁问我还有什么办法
    3. 项目拷打了半个多小时。。

可能确实时间太长了,没问别的项目了

代码

leetcode原题 39. 组合总和,先问我思路,答出来用递归后让我开始写,界面比较奇怪一开始我还以为要处理输入输出(,给我的时间比较短,还在调试的时候就让我先停下来继续后面了

八股

  1. Java代理模式(没听说过,不过他提示我我都用过spring了为什么会不知道代理模式后给他举了个正确的例子)
  2. 怎么设计数据库索引(感觉寄,我举的例子他稍微愣了一下,然后问我项目有没有涉及,我说一开始确实没有。。)
  3. 什么是幻读(寄,我举的三个例子全是脏读,最后也没想起来幻读的例子)
  4. 死锁的条件
  5. 怎么预防死锁
  6. I/O多路复用(不会)

阿里云一面

代码,手搓hashmap

无项目直接八股,疑似看了项目但也没让我介绍,其实就是问八股

输入网址之后的过程
https
dns用的什么协议
Java数组的几种实现方式(我以为要说jvm的源码实现。。。告诉他没怎么看过源码,看了眼八股好像是要答怎么实现的接口(Arraylist,linkedlist之类的)(6
java内存模型
类加载机制
操作系统网络io模型
项目防死锁是什么意思
除了行锁,那你还了解哪些方式
(因为上面提到了乐观锁)怎么用sql语句实现乐观锁

腾讯一面

岗位:QQ后台开发

昨天hr和我沟通把时间提前了半小时,但是没注意到会议链接更新了,我在旧会议室里等,面试官在新会议室里等。。好在5分钟后面试官发现然后来我这边了。具体流程如下:

部门介绍->项目拷打->代码

好消息:没问八股

坏消息:八股都在项目里

没有自我介绍

部门介绍:

不太记得了,好像是说主要是开发QQ频道的服务,问我用没用过(

golang开发

又问我有没有读研打算

项目拷打:

十分难得的把我写的3个项目都问了,而且是偏引导式的,没有一上来就问我亮点是什么。

由于八股(感觉都不算八股,疑似有点灵活了)掺杂在项目中,下面一个一个项目来

第一个项目(购物平台)

  1. 问我参与了哪些服务
  2. 具体实践中有没有遇到什么问题,自己觉得什么地方写的比较出彩
  3. (给我推荐了很多nb的技术,这时候心脏骤停要是问我这些就寄透了)
  4. 由于上面回答了数据库加锁(不能白白被字节拷打),下面开始疯狂拷打数据库
  5. 怎么加的锁,有没有什么问题,更好的方案有考虑吗
  6. 用的什么数据库,为什么
  7. 用的什么引擎
  8. 引擎的数据结构,介绍一下,你的理解?
  9. 如果你的项目对数据库有高流量/压力,你准备怎么解决
  10. 数据库遇到性能瓶颈,你是怎么排查的?(随便说的,基本不会,因为从来没做过)
  11. 索引怎么设计的?比如听你说你的订单会有商品信息,还有id之类的,你准备怎么来建这个索引?(面试官挺认真的,期间我口胡说了一下和主键建联合索引,后来意识到不太行就改了说法,还是被他听见了((
  12. ACID,展开说说
  13. 日志的区别
  14. 事务提交后崩溃,有哪些情况,详细说说
  15. (附:数据库这块问的巨多,还很琐碎,不太能全记下来,上面是主要内容)
  16. 除了MySQL还用过哪些开源中间件(给我问懵了,我哪知道哪些是开源的,答了个kafka,不过为了防止他问我kafka我主动承认不太了解具体内容)(补:不知道springboot算不算((
  17. 用的session还是cookie
  18. 两者有什么区别(只答上来了cookie((
  19. (介绍了一点JWT,但最后没问)
  20. 看我项目简介上还写了避免死锁,问我哪里会产生死锁(下次不写了)
  21. 代理用的nginx还是apache
  22. 项目有进行过压测吗(没有,这要问我怎么压测不是完蛋了)
  23. 最后问了我项目的数据量如何,为啥项目持续了这么久((

还有许多琐碎零散的问题会根据我的回答展开,比如我说可能高流量影响性能,他问我怎么处理或者缓解这种情况之类的…不一一列举了

第二个项目(编译器)

  1. 面试官说他不太了解编译器(听到这如释重负,可以随便说了((,让我直接讲讲项目遇到的挑战,怎么解决的
  2. 他听说LLVM在很多新语言的编译器中都被拿来辅助开发、充当工具,问我为什么,介绍一下

第三个项目(论文检索平台)

回到了他的舒适区,继续被拷打

  1. 数据怎么来的
  2. 依然拷打数据库,问我用的什么数据库
  3. 检索平台重在检索性能,我是怎么优化的
  4. 怎么建的索引,考虑是什么
  5. 如果数据量继续爬升到百万级,性能可能提升不太明显了,你有什么别的考虑吗
  6. 为什么还用MySQL,有没有其他的考虑(不知道,确实只用过MySQL)
  7. (他告诉我MySQL不太适合做检索任务的数据库,推荐我去了解一下ES)
  8. 怎么处理热点数据的
  9. 有没有用过别的优化手段

基本上问的我全是数据库的东西,感觉面试官是个数据库高手,其实我想告诉他这个项目重点还有一个分类算法的((但他好像自动忽视掉了

算法:

由于时间紧张,面试官3:30还有一场面试,遂给我找了一道简单点的动态规划题

leetcode原题,最长严格递增子序列(跟我舍友腾讯一面题目一样)

反问环节:

考虑到面试官时间紧张,我就问了一个问题,开发岗除了写代码还有什么别的要做的吗

答:摸鱼

总结:

整体感觉上面试官人挺好的,不会刻意刁难你,基本上都是围绕项目展开的,也会接你的话(虽然可能是错的),然后从你说的话先问相关解决方案或技术,进而展开八股的考察,也会主动分享好用的技术(不会拿这个来拷打),给你的项目提优化建议,有哪些设计是好的,哪些可以优化,哪些适合课程内的小项目,哪些适合大项目

如果你的答案有一定道理但又不是完全对,他会先认可你的提案,然后给一个更好、更适合他们业务场景的方案,毕竟课程项目不可能做到完美,也不可能考虑高并发/分布式场景

写完回忆才意识到被问得基本上全是数据库的东西(

腾讯二面

代码:LRU + 滑动窗口最大值

项目遇到挑战,怎么解决的

https怎么防篡改
状态码301,302了解吗
项目中用到了哪些http状态码
遇到问题(比如404)怎么排查的
服务器CPU异常飙升,怎么排查
InnoDB怎么处理查询时同时命中多个索引
HashMap的结构如何
HashMap有什么问题
HashMap线程不安全怎么解决
分布式系统了解如何
spring启动流程
springboot的组件组成
ai相关的东西做过什么,落地了吗,项目被实际使用过吗

为什么项目用java算法题用的c++

腾讯广告一面

腾讯广告一面

逮着机器学习分类算法问了好久
用了哪些分类算法,最终怎么确定的
选了哪些标签
接着追问了不少项目里机器学习算法的细节。。
F1和召回率(只答了真假例,公式已经忘了)
生成式模型和判别式模型(只记得个先验和后验概率了,具体概念已经忘了。。)
贝叶斯公式
检索平台的话知道哪些字符串比较算法(只知道kmp。。)
用户输入字符串,后台是怎么做检索
(接上问)或者说按你的经验你认为是怎么匹配的
(继续接上,我应该是理解错面试官的意思了)比如有一串文本,怎么判别有哪些文本是可以被匹配的(检索嘛)(不知道,只答了个BLEU,其他也不知道了,面试官应该是放弃了不接着问了。。。)

开始问编译相关的
.elf和.so的关系?(不太清楚是不是这个问题,因为问题我也没听懂)
二进制可执行文件有哪些组成部分
(上面不会,面试官换了种说法)如果你是操作系统,你需要哪些信息来运行一个可执行文件,比如C++编译出来的,可以详细讲讲
写的编译器支持调试功能吗,比如gdb介入
有支持哪些平台,arm还有别的吗
socket底层相关,比如操作系统层面怎么处理socket的连接的,了解多少(完全不会,所以问题也没怎么记住)
(上问换了种说法)比如tcp的socket怎么处理你有了解吗
还有些问题都没听懂,不记得了

反而是最大的前后端项目没问多少
亮点和挑战
有尝试用乐观锁吗
密码怎么加密的,了解哪些讲一讲

八股?
MySQL索引
为什么MySQL不用跳表用B+
MySQL事务和Redis事务
像大模型网站对话的时候模型一个字一个字吐,或者展示思考过程,你知道是怎么实现的吗,用了哪些协议(???只答了个http的服务器推送)
http服务器推送用哪个版本?(答了2)
1.1可以主动推送吗,头部哪些字段实现?(不会,只答了个浏览器轮询)

说实话八股问的还真不多,而且真的灵活,但是项目挖的太深了,算法问得太细了(好多细节和概念还有公式都不记得了),编译相关的又问的太底层了,好多linux底层和操作系统底层的东西

1算法+1SQL题
算法lc原题,公共祖先

美团一面

没有问八股,感觉怪怪的
三个项目都问了一遍
论文检索平台,了解了大致流程,问了下数据来源相关,没有拷打算法也没有拷打数据库
编译器项目,让我演示了一下消除死代码和常量传播是怎么实现的
购物平台,本来是要给他运行展示的,但是node配置出了点问题,遂看之前课程留下的功能展示文档,也没有拷打,就问了点技术手段

算法:一道原创一道lc原题,都是链表,核心模式(和lc一样)

美团二面

项目+场景
场景基本上都是从项目里延伸出来的,结合少量八股回答
最大的一个场景是分布式方案设计

算法:k个一组反转链表

拼多多一面

八股 + 项目为主,算法题是连续序列求和满足target的数量

具体问题已经记不起来了

拼多多二面

八股为主,项目问的比较少,算法题:LRU

具体问题记不起来了

拼多多三面

没怎么问八股,问了一点项目,跟二面问的差不多

算法题:快排 + ip地址反转

问了一个场景题:给你一副出厂顺序的扑克牌,怎么尽可能打乱,时空复杂度尽量低。最后只想到了O(n)O(n)时间O(1)O(1)空间的随机算法,但面试官一直意犹未尽,看起来有更低的,但我不知道了

一个脑筋急转弯,有若干不均匀的绳子,烧一根要1h,怎么记45min,用尽可能少的绳子。