
大家好,我是阿秀。
昨天在网上摸鱼冲浪的时候,在牛客网上看到一篇美团员工离职贴,帖子标题为"美团lastday,知无不言~"。
我没在美团工作过,不是内部员工,所以也只是一个"外人"视角去看的上面那篇帖子,纯粹抱着吃瓜?的心态去看,总体看起来个人感觉可信度比较高,如果有在美团工作的小伙伴可以评论下这位同学的评价是否正确。
相较于阿秀以前看到的员工离职分享贴,这位同学并没有一边倒的夸或者贬,而是优缺点都有提及
,比如优点有新人培养好、技术不错、权限较开放、实习转正率高等,缺点有实习福利低(指只有开水)、只有周五可以早下班、北京工区分散,基建设施不一样等。
不过其中比较吸引我的是这位同学的一句"暑期实习转正率较高,去年转正率应该是70%多...",虽然早就听说美团转正率比较高,但我一直以为最多不过 50% ,没想到居然有 70%+
!这可属实有点高了。。。
于是我立即找了一位在美团搬砖的朋友求证,据他阐述:其余岗位不好说,技术岗实习转正率是有 70% 的,且他们小组去年7个实习生转正了 6 个,隔壁组则是 8/10 的转正率

不过美团是个大公司,BU多,小组多,可能有些部门转正率高,有些小组转正率低也说不定,如果有在美团工作的小伙伴可以简单聊一下自己部门的实习转正率,是不是真的有 70% 这么夸张?这个数字确实很高。。。
这里也顺便分享一篇美团实习面经,众所周知美团是 Java 大厂,其绝大多数业务都是Java实现的,但美团对于非 Java 技术栈的求职者也挺友好,经常看到 C++/Golang/Python 技术栈的去面试美团都给了面试机会。
这位同学就 Golang 技术栈,在面试美团时明确表示自己不会 Java 后,面试官也没有询问 Java 相关的知识点,而是直接问的计算机基础知识,比如数据库、算法等知识点,下面分享下这位同学的两轮面经。
链接:https://www.nowcoder.com/feed/main/detail/4dea1965269a4fb8afefed91fad2851d
对了,对于这份面经中比较经典的面试问题,阿秀已经录入到去年开发的互联网大厂面试真题记录网站:InterviewGuide 中去了,这个网站是阿秀去年为了方便自己找工作而开发的面试网站,目前是开源状态,欢迎试用体验。

网址:https://top.interviewguide.cn/
目前支持按照行业、公司、岗位、科目、考察时间等查看面试真题,在面试前一天晚上看一下有很大概率会遇到第二天的原因
,截止目前已经有不少小伙伴遇到原题了,具体可以看下链接:2023年7月字节跳动后端研发岗面试考察题目Top10、局部性原理还真有用!
一面(30min)
1、Java?
直接说了不会...
2、数据库索引结构?
MySQL数据库使用多种索引结构来优化查询性能,以下是一些常见的索引类型及其结构:
B-Tree索引:
这是MySQL中最常用的索引类型,适用于全表扫描和范围查询。 B-Tree索引使用平衡多路搜索树,每个节点可以有多个子节点。 叶子节点通常包含指向表中实际数据的指针。
适用于等值查询,但不能用于范围查询。 通过哈希函数将键值映射到索引中的一个位置,然后通过这个位置快速访问数据。
用于全文搜索,可以快速查找文本字段中的词或短语。 通常使用倒排索引(Inverted Index)结构。
这不是一种索引类型,而是一种将大型表分割成更小、更易于管理的部分的技术。 每个分区可以有自己的索引,这可以提高查询性能。
这不是一种索引结构,而是一种查询优化技术。 当一个查询可以使用多个索引时,MySQL可以选择使用索引合并来优化查询。
此外还有T-Tree、S-Tree索引等,每种索引类型都有其特定的使用场景和优缺点。例如,B-Tree索引适用于大多数情况,而Hash索引在等值查询中性能更好。
3、数据库并发事务会带来哪些问题?可否举例说明一下?
据库并发会带来脏读、幻读、丢弃更改、不可重复读这四个常见问题,其中:
脏读:在第一个修改事务和读取事务进行的时候,读取事务读到的数据为100,这是修改之后的数据,但是之后该事务满足一致性等特性而做了回滚操作,那么读取事务得到的结果就是脏数据了。
幻读:一般是T1在某个范围内进行修改操作(增加或者删除),而T2读取该范围导致读到的数据是修改之间的了,强调范围。
丢弃修改:两个写事务T1 T2同时对A=0进行递增操作,结果T2覆盖T1,导致最终结果是1 而不是2,事务被覆盖
不可重复读:T2 读取一个数据,然后T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。
脏读
第一个事务首先读取var变量为50,接着准备更新为100的时,并未提交,第二个事务已经读取var为100,此时第一个事务做了回滚。最终第二个事务读取的var和数据库的var不一样。
幻读(幻影读)
T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。
丢弃修改
T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。例如:事务1读取某表中的数据A=50,事务2也读取A=50,事务1修改A=A+50,事务2也修改A=A+50,最终结果A=100,事务1的修改被丢失。
不可重复读
T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。
4、数据库隔离级别?
未提交读
事务中发生了修改,即使没有提交,其他事务也是可见的,比如对于一个数A原来50修改为100,但是我还没有提交修改,另一个事务看到这个修改,而这个时候原事务发生了回滚,这时候A还是50,但是另一个事务看到的A是100.可能会导致脏读、幻读或不可重复读
提交读
对于一个事务从开始直到提交之前,所做的任何修改是其他事务不可见的,举例就是对于一个数A原来是50,然后提交修改成100,这个时候另一个事务在A提交修改之前,读取的A是50,刚读取完,A就被修改成100,这个时候另一个事务再进行读取发现A就突然变成100了;可以阻止脏读,但是幻读或不可重复读仍有可能发生
重复读
就是对一个记录读取多次的记录是相同的,比如对于一个数A读取的话一直是A,前后两次读取的A是一致的;可以阻止脏读和不可重复读,但幻读仍有可能发生
可串行化读
在并发情况下,和串行化的读取的结果是一致的,没有什么不同,比如不会发生脏读和幻读;该级别可以防止脏读、不可重复读以及幻读。
5、数据库日志(主要是binlog)
binlog日志是MySQL数据库的一种日志记录机制,用于记录数据库的修改操作(如插入、更新、删除等),以便在需要时进行数据恢复、数据复制和数据同步等操作。
binlog日志的实现以下功能:
数据恢复:binlog日志可以用于回滚到之前的某个时间点,从而恢复数据。 数据复制:binlog日志可以用于在主从数据库之间复制数据,从而实现数据的高可用和负载均衡等功能。MySQL的binlog日志有三种格式,分别是Statement格式、Row格式和Mixed格式。它们之间的区别如下: STATEMENT:每一条修改数据的 SQL 都会被记录到 binlog 中(相当于记录了逻辑操作,所以针对这种格式, binlog 可以称为逻辑日志),主从复制中 slave 端再根据 SQL 语句重现。但 STATEMENT 有动态函数的问题,比如你用了 uuid 或者 now 这些函数,你在主库上执行的结果并不是你在从库执行的结果,这种随时在变的函数会导致复制的数据不一致; ROW:记录行数据最终被修改成什么样了(这种格式的日志,就不能称为逻辑日志了),不会出现 STATEMENT 下动态函数的问题。但 ROW 的缺点是每行数据的变化结果都会被记录,比如执行批量 update 语句,更新多少行数据就会产生多少条记录,使 binlog 文件过大,而在 STATEMENT 格式下只会记录一个 update 语句而已; MIXED:包含了 STATEMENT 和 ROW 模式,它会根据不同的情况自动使用 ROW 模式和 STATEMENT 模式;
6、一道数据库设计题
7、两道easy算法
直接秒了
二面(45min,目前组leader面的)
1、之前学的人工智能,为什么想来找后端?
balabalba
2、对大模型的看法?
一种趋势以及新的方向,应该积极拥抱而不是逆流而上
3、对简历里的IM项目详细询问
balabalaba
4、反问
问了业务、实习时间等。

你好,我是阿秀,普通学校毕业,校招时拿到字节跳动SP、百度、华为、农业银行等6个互联网中大厂offer,毕业后先于抖音部门担任全栈开发工程师,目前在上海某外企带领团队继续从事全栈开发,负责对印项目。
前年和去年分享的很多校招上岸经验也都是出自阿秀的学习圈中的往届上岸人如21届、22届、23届等,阿秀的学习圈中置顶帖的「知识图谱」和「精华区」中有很多计算机大学本科&研究生学习以及校招的内容和问题,都是往届沉淀下来的瑰宝。

多看看这些能够帮你的校招之路走的更稳、更顺、更平坦,比如:
也会在自己组建的阿秀的学习圈中分享一些社招跳槽找工作的经验,都是自己一路走过来的经验。