首页 > 给大家分享一些面经
头像
HSTOMMY
发布于 2021-11-24 21:31
+ 关注

给大家分享一些面经 内部员工回复

萌新情况比较特殊,是今年21届毕业但未找到工作的那种,目前上岸了字节跳动在上海的音乐部门,从事后端开发。个人背景是理论与计算化学,然后通过尚硅谷自学的java后端开发。
由于10月份投简历时严格意义来说不属于校招,但社招又是缺乏经验,所以大厂的面试机会比较有限,不少是蹭的22届校招以及一些以校招难度招人的社招岗位。在这里把我遇到的一些面试题分享给大家(每次面试我都有录音,所以记录还是比较全面的,这里只提供一些计算机基础相关的题目,不涉及个人背景或者价值观这样的题目):

蚂蚁集团,风险管理部门,杭州
一面:
1. Spring等框架的好处是什么? 
2. 为什么要用Redis?
3. java与python的区别? 
4. 对于计算机网络七层协议的理解? 
5. 对于数据库中索引与事务的理解? 
6. Java类加载过程?
7. 设计一个二叉树的类,求出一棵给定二叉树的树高。
二面:
类似于主管面,问些价值观,过往经历。
三面:
1. TCP三次握手的过程 
2. 用户浏览器输入网址到返回页面的过程 
3. 简单介绍一下Spring框架。
(后来说招到了有经验的人,就把我刷了)

华为od,重载操作系统,上海
一面:
1. 为什么要用Spring等框架进行开发 
2. 对UML与设计模式有了解过吗?简单介绍几个? 
3. 多线程问题有了解吗?项目中是怎么解决的? 
4. java迭代器模式是怎么样的,用迭代器遍历和普通for循环有什么区别。(这个涉及到fast-fail机制以及并发修改错误) 
5. 对于内存泄漏的理解,发生OOM了如何排查?
算法题:模拟两个人玩小猫钓鱼的扑克牌游戏,用栈和队列模拟就行了。
二面:
1. 对于Spring中IoC、AOP特性的了解 
2. 项目中是如何解决并发安全问题的。
3. 项目中是否有涉及到数据检验? 
4. 如何在前后端分离模式下测试后端接口?
(三面主管面就是劝我去他们的部门,但最后还是考虑到是od所以没有去。)

金蝶软件,深圳
一面(很有意思的面试):
1. 对于微服务的理解,项目划分微服务的依据,是否涉及到了数据库的拆分,Spring Cloud各组件作用,对于分布式事务的理解(当时完全不知道,现在知道一点点XA、TCC啥的)
2. 如何要让你设计一个语言的虚拟机,你会考虑哪些点?(可以参考JVM的架构进行设计,然后不同语言有不同的取舍和需求吧!比如是否需要垃圾回收,再比如是否需要生成字节码这种的)
(二面是hr面,不过后来还是挂了。)

字节跳动,抖音电商
一面:
1. Spring Boot启动流程,越详细越好
2. MySQL存储引擎,InnoDB存储引擎数组组织形式 
3. Nginx负载均衡算法,其多路复用的几种模式 
4. ES输入查询语句后运行流程(应该从近实时查询和分布式系统的角度看)
5. 操作系统虚拟内存的概念,访问内存数据的流程 
6. 零拷贝了解吗?
7. 模拟实现LRU算法。
(这次面试的教训就是,简历上技术哪怕是了解部分也不要瞎写,有时候会被问,由于答得不好所以挂了。)

德邦快递
一面:
1. 项目本身,微服务,数据库等 
2. HashMap中负载因子以及数组的长度,减少hash冲突的方法(这里说的是计算hash后做了一些位运算,保证均衡以及哈希表长度保证是二的次幂) 
3. 类加载过程,双亲委派机制
4. 多线程的了解,创建线程的方式,Callable,创建线程池的七个参数 
5. JVM运行时数据区 
6. 垃圾回收时对于垃圾的判断以及垃圾回收算法 
7. 对于DI的理解,Spring中常用注解,对于Restful的理解,对于AOP的理解 
8. Redis为什么用单线程?持久化。
(八股文我背得还行,JVM、MySQL和多线程都是系统学过的,所以这些答得相当不错,德邦快递过了这一轮面试直接发offer了。)

蚂蚁金服,捞起来的简历,证券金融部门,上海
一面:
1. 问了一些Linux文档处理的问题,但我实际上用的不是很多,所以答得不好。可以参考grep、sed、awk、wc、sort等的使用。
2. HashMap为什么不是线程安全的?HashMap什么情况下会出现CPU 100%的问题?如何定位?(这个很偏,参考HashMap jdk7 中头插法与并发扩容导致循环链表的问题)
3. Java中几个IO流。零拷贝。
4. 反射的用处,在框架中反射的应用,反射有什么缺点(答了效率低还有破坏权限限制,可能还有别的点)
5. 用SpringBoot开发项目的流程
6. MyBatis是如何操作数据库的?说到底层实际上是封装了PreparedStatement,问为什么用这个不用Statement。
7. 对于Spring AOP的理解。
8. TCP三次握手和四次挥手的过程
9. Joseph环问题,不太清楚最简洁的递推算法,用了模拟操作的方法来实现的。
二面是主管面,问了一个比较开放的问题:
数据结构中栈、堆还有链表有什么区别?
这个问题有点无厘头,准确来说要从数据结构的逻辑结构(线性、半线性、非线性结构)以及物理结构(数组连续存储、链表非连续存储)的角度来回答。其它是一些价值观问题。
(本来有三面的,但突然说没有招聘名额了。)

字节跳动,捞起来的简历,音乐部门,上海
一面:
1. HashMap查找一个元素的复杂度,其实可以用查链表、红黑树还有没有元素的角度回答问题。
2. 算法题:N个元素中查到最大M个元素。要给出算法复杂度。
3. MySQL聚集、非聚集索引。联合索引下一个SQL语句是不是能够用上索引。
4. 算法题:一个青蛙跳格子问题,一开始没想明白思路,经过引导发现是个贪心问题。
5. Redis中的数据结构,zset底层是用什么来实现的,描述一下对应的数据结构。
6. HTTPS整个过程,其中用到了哪些安全相关算法。
7. synchronized锁升级过程,你提到了CAS,简单介绍一下,以及ABA问题。
二面:
1. 项目中微服务组件、数据建模(我理解是依据业务需求先构建数据库与数据表,然后写后端CRUD端口?)、数据表中索引使用情况、使用like "%abc"能不能用上索引
2. 联合索引的组织方式,如果将联合索引(A,B)设计成先以字段A为B+树,然后叶子节点索引到字段B的B+树上,这样设计如何评价?(很有意思的一个问题)
3. Redis作用,对MySQL修改时,应该如何对Redis做修改?我回答的是先删Redis再更新MySQL再更新Redis,被问有什么问题,应该怎么解决?
这个是数据库与缓存双写会由于并发修改导致不一致的问题,比如MySQL先改A再改B但Redis先改了B再改了A就出现数据不一致了。怎么解决呢?
按照面试官的意思,删Redis然后改MySQL就行了,等到读数据时再从MySQL加载数据,这里讲究最终一致性而不是强一致性。
4. 算法题:给定一系列线段,求出线段的总长度(重叠部分不重复计算)
5. 数学题:两个人轮流抛一枚公平的硬币,第一个抛到正面向上者赢,先抛的人赢的概率?
三面:
这是偏主管面,不过还是做了算法题
1. 算法题:打靶子可能0到10环的整数,请问打10枪总分为80分的所有可能情况数?
2. 针对我之前作为计算化学的并行计算进行发散的一系列问题:
如何进行并行计算?现在单个核运行多个进程/线程会提升性能吗?如果会有文件读写以及计算交替会提升性能么?单个线程/进程如何服务多个网络访问请求?了解MapReduce吗?(???)
3. 对于自学的计算机知识印象最深刻的点是哪个?(答了计算机的模块化,例如网络的协议栈,操作系统各个子系统)
感觉字节是真看重算法题,而且由于会转golang,java就不会问得那么多,数据库问得挺多的。

另外还有一些银行子公司的面试题:
1. 注解的使用方式和原理,可以想一下框架中怎么用注解的?
2. 对算法的了解,简单说几个图相关算法。
3. raft、paxos知道吗
4. redis基本数据类型,redis用作缓存会有哪些缓存问题?

1. linux中常用的几个文件系统,有什么区别?(时间长了有点忘了)
2. Spring中常用注解,如何用Spring框架配置一个线程池?
银行面试时间只有15 min,个人感觉就是对技术要求没有那么高,所以就不考虑去了。

最后给一个传统做风电还有物联网公司的面试题,一面后就没下文了:
1. 如何理解面向对象
2. java中权限修饰符
3. 接口与抽象类的比较
4. 框架中使用注解的方式
5. java运行时数据区
6. 写一个MySQL语句
7. InnoDB没有主键时会怎么做
8. 主键索引与唯一索引的区别
9. Redis和MySQL使用方式
10. 进程与线程的区别,线程间通信方式
11. zookeeper Leader选举过程。(初次选举以及故障恢复时重新选举)
13. 给定一棵二叉树,返回最大K个节点。

整体来说我还算是校招难度吧,所以各种不同类型的公司看下来就是:
1. 数据结构与算法还是挺重要的,然后是计算机网络、操作系统、设计模式
2. MySQL问得不少,索引问得最多,其次是事务、SQL语句书写,有时候项目会问你有没有分库分表,别懵了就行。
3. java除了基础语法以外,java虚拟机问得不少,java多线程开发也会问一些
4. Redis会问一些,因为一般项目里都会用,所以会问为什么用、单线程、数据结构、缓存等问题
5. 框架注重于为什么要用框架,对于框架一些特性的理解,有时候会问一些使用或者问源码
6. 中间件因为我写了,所以被问到一些,其实问得不会太多,个人怀疑是因为公司中肯定是要自己造轮子的。了解zk中leader选举过程,es中分布式架构和近实时搜索啊,nginx一些原理啊很有可能是加分项。
7. 一些比较时髦的概念,如微服务、前后端分离、分布式(分布式事务、分布式一致性算法、负载均衡啥的),我觉得就是到了解能够说出来的程度。

分享这些与大家共勉,期望大家都能够去心仪的公司!

更多模拟面试

全部评论

(14) 回帖
加载中...
话题 回帖