应届生大数据面试题合集
- 一面
维度建模 如何建 确认主题 确认粒度 确认度量 确认事实表 确认维度表 Hive shuffle 和 spark shuffle的区别 Spark 为什么快 Spark任务是怎么执行的 转化率如何计算 缓慢变化维怎么处理 Flink状态 Flink窗口 Flink广播流
题目 两个升序链表 合并后仍然升序
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符 Sql题 一个lag解决的问题
- 二面面经
各种业务问题,涉及全流程 Ks iv 值 海量用户 用户分群(位图) Hive count(distinct)有几个reduce 海量数据会有什么问题 Spark 有什么优化 Flink 精确一致怎么保证 Flink 实时topN Flink 写入redis怎么保证精确一致 事实表分类 Spark hive 用过的解决数据倾斜的方案 事实表分类 累积型快照事实表做法
- 三面
Hdfs读数据流程 源码级别(要回答出来 rpc) Hdfs写数据流程 源码级别(要回答出来rpc) Mapreduce shffule原理 源码级别(要回答出来锁 多线程 以及缓存写磁盘交换) 数仓为什么要分层 实时比起来离线 要注意啥 特征挖掘 是怎么做的 怎么管理的 两道题 Sql top1问题
编程题 给一个字符串检测是否能重新排布字符串让相邻不同 如bba 能改成bab 返回true aaaac 返回false
2
Spark Streaming和Flink有啥区别?
- Spark宽窄依赖定义,列举几个宽依赖算子
- join有哪些种类?map-reduce里面join是咋实现的?
- 多路复用,NIO这些了解过吗?
- Redis有哪些数据结构?zset底层咋实现的?
- Redis用来当分布式锁是咋整的?
- Zookeeper知道不?里面用的啥协议?
- MySQL有哪些锁?next-key lock能解决啥问题?
- Kafka通过哪些机制实现了高吞吐量?
3
一面、 8.10 45min(小姐姐)
- Flink Checkpoint:
面试官是说到checkpoint作用,然后我就开始拓展 项目中开启了checkpoint相关配置给用户使用,说到一些配置信息 之后我自己对ck还挺了解的,所以引申到Chandy-Lamport论文,这篇论文基本思想就是marker n一到进程就保存进程状态,但是进程状态到最终快照状态n的差距还需要链路状态来弥补 而flink的ABS其实简化了里面思想,但是这种简化思想导致的就是barrier需要对齐,而barrier对齐那么导致ck时效性受到影响,反压更加加剧这种情况。所以flink 1.11阿里提出了unalignCheckpoint机制 ,这个机制具体怎么做看直接flink文档吧
说到配置,C-L论文,ABS,barrier对齐,对齐缺点,阿里的不对齐
- 端到端的exactly-once:
端到端要说三部分,源+数据处理+sink 比如kafka,源主要是offset由ck保存到快照里了,所以offset交给自己去管控(assign/seek)而非kafka 数据处理自然就是ck sink:要么外部支持幂等性,要么外部支持事务,kafka这种就是事务了,大概原理就是在barrier n来时preCommit事务n-1,开启事务n,在notifyCheckpointComplete时commit 事务n-1 (后续传个图上来)
- Ck恢复,拓扑图修改后如何恢复?
这个其实只要理解快照中各个算子对应的state(keyedState+OperatorState)都是算子id--->State形式,而如果不指定算子id,那么算子默认id和其前后算子有关,所以一旦拓扑图改变,那么必然算子id改变,状态对不上,从ck或者savepoint中恢复失败 不太会,我说指定算子id
- stateBackend用过哪些
直接说RocksDB不太会 😂 这里感觉如果知道hbase,可以说一说
- Spark stage、task划分
这个典中典了,反向创建,反向submitMissingTask(先父stage再子stage)
- Spark提交流程
典中典了 算法:礼物的最大价值(dp) 栈序列是否合法(stack模拟即可)
二 面 8.12 1h
- 进程线程区别
3部分吧 资源、调度单元 通信方式 切换代价
- 进程通信方式、最常用是哪种
管道、消息队列、共享变量、socket、信号量、信号 socket
- socket通信涉及哪些方面(很发散感觉答的不好)
3个部分吧 scoket使用和TCP各个阶段对应 最后可以说到I/O多路复用,然后举Kafka网络模型的例子,岂不美哉???
- Java HashMap和ConcurrentHashMap 说了很久很久
典中典了 HashMap:桶集合+链表/红黑树 为什么桶集合选择数组啊?为什么使用拉链法解决冲突啊?什么时候resize() 啊?什么时候树化?恢复?ConcurrentHashMap :1.7/1.8区别,然后size和get无法强一致性之类的
- Kafka理解 说了很久很久
kafka这个可以先说为什么使用kafka:回溯消费啦、上下游解耦啦... 全部怼上去 然后kafka总结下来真的就高吞吐、高可靠、高可用三点 高吞吐:生产者异步、压缩、批量发送啦、网络模型I/O多路复用高效啦、写入pageCache啦、顺序I/O啦、baseOffset形成跳表啦、零拷贝啦、批量拉取啦,一条龙整上,爽歪歪 高可靠:如何做到不重不漏不乱序?典中典了 高可用:Controller HA、PartitionHA(可以说到ISR、ISR概念,为什么设定ISR、如何保证消费一致性啦.............)
我从高吞吐、高可靠、高可用三点回答的,但是说的太多了,面试官到最后要求用三句话说明高可靠
- 10TB 日志数据类似统计谁访问了哪些域名,访问了多少次,给出解决方案
我只会用mapreduce思想,想请教大佬解答下
算法 最大连续子数组之和(具体数组) 设定start,end 大于max时不断更新end,nums[i]+dp[i-1] < nums[i] 更新start
三面 8.16 40min
- 说说MR(介绍的很不好)
告辞!
- 主动说Spark的shuffle 过程
三种shuffleWrite(名字可能有错,源码好久没看了) BypassMergeSortedShuffleWriter SortedBaseShuffleWriter UnsafeShuffleWriter 每一种都有自己使用范围,第一种就是分区数<200(可配置),不排序,不聚合 最后生成两个文件blockFile+index ,sortedBaseShuffleWriter解决了第一种过渡消耗内核缓存区缺点,那么最终要按pid分组,那只能对pid进行排序了,额外的可以选择对key进行排序与聚合(如果可以,说说里面的sizeTrackingAppendOnlyMap,Array[2*cap] 存放了,使用线性探测解决冲突之类的);unsafeshufflewriter主要涉及到较新的spark内存管理有关了,申请memoryBlock为page,然后数据序列化到page中,设立一个类似索引的page,最后溢写磁盘对索引的page进行 排序之类的,可以看看网上博文
reduce只有BlockStoreShuffleReader 基本流程就是获取mapStatus,解析获取blockManagerId,然后从对应BlockManager拉取map输出的blockFile对应pid数据,然后边拉取可以边聚合之类的
- flink中ck超时原因(这checkpoint功能似乎字节面试官很看重,感觉得好好准备)
-
反压 毕竟包含barrier的event buffer一直不到 ,subtaskCheckpointCoordinator做不了ck,当然超时
-
面试官说:算子执行外部请求能否导致超时?当时没想出来,太紧张了【裂开】
后面三面过了后,通过hr给面试官转发了消息:MailBoxProcessor中的线程也就是数据处理(subtask)线程,该线程每次会pollNext从InputChannel中拿取buffer,如果是event buffer(barrier)并且barrier对齐了,那么此时执行performCheckpoint方法(之后就是保存快照逻辑)
如果直接在某个userFunction去请求数据,那么使用的是就是当前数据处理线程(比如请求MySQL数据,耗费大量时间),必然影响当前线程处理barrier,导致checkpoint超时 而比如在open方法中去初始个线程池比如RichAsyncFunction#open方法中初始化线程池然后去查询,便不会影响正常数据处理线程
必然超时呀!!!
当时脑瓜子嗡嗡的,只说了反压,面试官叫我回去试试算子执行外部请求能否导致超时(东扯西扯,扯到同步快照保存,异步快照保存,都没啥用,最后尬住了。。。)
- flink和spark区别(spark streaming不太会)
说了flink中subtask和spark中task数据处理区别 这个其实就是数据如何流通还有上游主动推到下游还是下游拉取上游之类的?
- spark 3.0特性 gg
真不会xdm
- 反问
问着问着就又变成面试官问我了【裂开】,数据倾斜怎么处理
- 暴力加并行度
- 两阶段聚合
- join里面广播变量 + 采样复制(和面试官争论了一波) 可以看一波美团技术, https://tech.meituan.com/2016/05/12/spark-tuning-pro.html 平时怎么看源码的
4
实习一面:
java八股文,引用类型基本类型的区别,list map hashmap接口继承关系,linkedlist arraylist hashmap实现等 大数据部分,hadoop框架,namenode,联邦namenode,spark rdd,spark和mr区别,转换算子和action算子 sql题一道,忘了,不难 算法题:返回一个用当前数的各位数字组成的比输入数大的最小的数,比如1234返回1243
实习二面:
spark有哪些算子,spark比mapreduce的优势,spark shuffle具体实现,和mr shuffle的对比,spark内存 然后问了很多不相关的科研项目(简历上写的)和一些宏观的问题,比如大数据的核心思想是什么(分治) 算法题:20M内存 100G文件 找top10的url
实习三面:
主管面,忘了问了啥,问了一点点大数据框架spark hive hadoop啥的 是否看过大数据的三驾马车的论文,讲一讲 大多数都是问的宏观问题和一些比如啥时候能到岗实习多久这种 sql题忘了,也不难 算法题:一个有序数组找唯一重复的数,需要多种方法,用了双指针 hashmap 位运算等
5
一面,1h15min,5.19
感觉面试官特别好,上来刚聊两句我就十分放松了,然后就开始放飞自我hhhh 1.先来个自我介绍吧 2.聊了一下之前实习 3.kafka掌握怎么样,flink有没有接触过呢 4.先来个mr过程吧 5.每个小文件为什么要进行排序,最后合成的大文件为什么进行排序 6.一个wordcount案例,具体各个流程,map怎么做,reduce怎么做,很细 7.spark掌握怎么样,我说了解,然后就没问了 8.数仓呢,数据仓库的分层能说一下吗 9.数仓知识还了解什么 10.你刚刚说雪花模型把维度表规范化了,那说一下你了解的范式吧 11.做题吧,两道sql,两道算法,写出来 11.1 订单表 orders:订单 ID (order_id)、销售 (employee_id)、成交价格 (price) 销售表 employees:销售 ID (employee_id)、销售姓名 (employee_name)、所在区域 (region) 求各个销售的总销售额,要求有销售 ID、姓名、所在区域 11.2 订单表 orders:订单 ID (order_id)、销售 (employee_id)、成交价格 (price) 销售表 employees:销售 ID (employee_id)、销售姓名 (employee_name)、所在区域 (region) 求各个区域销售额最高的销售对应的销售 ID、姓名、所在区域、销售额 11.3 给定一个升序整数数列 L(L 中没有重复元素)和一个整数 n,判定 n 是否在 L 中 11.4 给定一个集合,求这个集合的所有子集组成的集合。可用序列来表示集合。12.反问:您觉得我之后需要加强哪方面的学习 总结:面试的很舒服,聊着聊着状态就特别好,题都a了 一面结束,第二天早上就接到电话进行二面,约5.24
二面,1h,5.24
二面面试官也很好,都有回应 1.自我介绍 2.实习时长 2.说一下mysql的索引吧 3.B树和B+树的区别,问的很细 4.你是考研还是保研,顺便说了下我简历的问题 5.spark掌握如何?问的很细,具体忘记了,完全没套路,很发散 6.jvm掌握如何?7.多线程呢?8.kafka呢,partition为什么采用磁盘顺序写?9.500G 的文件,机器 1core 1G,频率TopN 10.两道算法题 10.1 add(x) delete(x) random() 设计一个数据结构满足三种操作时间复杂度O(1) 10.2 岛屿问题变形,八个方向 11.反问:您觉得我之后要加强哪方面学习 flink,kafka要深入学一下,jvm多线程要补一补,之后会有三面 过了一个多小时,接到电话,直接hr面了 hr面,20min,5.25 大概就是个人优缺点,校园生活之类的,聊天 最后反问是不是hr面通过就录取了。没问题的话这周就发offer 俩小时之后就发offer了,太效率了,赞!
6
一面:
根据项目问了架构,涉及到的技术 spark streaming Vs flink watermark是干什么的,如何使用 数据倾斜如何处理 编程原则Solid Spark reducebykey和groupbykey的区别 mysql 索引相关,B+树,聚簇索引等,回表 Kafka 原理 高可用 算法:中文数字专阿拉伯数字
二面:
项目:重点讲一个,其中的架构,技术等 spark streaming vs structured steaminng vs flink 差别,flink checkpoint,barrier等,扩展到谷歌millwhile, dataflow等模型 Kafka 高可用如何保证,幂等性如何保证exactly-once。为什么性能好 其他的记不清了,多是大数据相关 算法:数组中 乘积最大的三个数,有负数,零的情况。排序后处理,复杂度分析
三面:(痛苦来了)
聊了很多现在公司业务问题 场景:三个节点日志,每个节点两千万,有时间和IP等信息,如何设计系统查询一个时间 范围内top10的IP,要求快速响应 想的是:通过flink或flume刷到mysql,然后groupby count。但是面试官问的特别详细,比如,flink如何读数据,什么原理……,怎么写入mysql,怎么存,一天6kw,10天6亿数据,分库分表?,怎么连接mysql……groupby怎么做,count怎么做…… 问的相当崩溃,最后如何及时响应用户请求,通过sql groupby 过后rollup,卷数据。触及知识盲区了。最后问了一些项目和管理中的问题,个人优势啥的
四面:
离职愿意,个人规划,薪资等
7
看面经里都没有与 Flink 相关的,由于我实习做的主要是用 Flink 开发实时任务,我来补充一下
这部分是问的问题,基本官方文档都有
Flink 的 Exactly Once 语义怎么保证 Flink 的 checkpoint 流程,都是同步 checkpoint 吗?Flink 任务故障重启流程,full restart 和 region restart 区别,举例 region restart Window 的概念 这部分是实习项目里用到的比较有价值的点
Flink 的 operator chain 机制一般会提升性能,但有耗时逻辑时把对应的 operator 拆开来跑,可以提高性能 上游数据不均匀的情况下,采用 rebalance 的连接方式均衡消费 多流 Join 的实现, connect stream + keyBy + CoProcessFunction + state state 和 timerService 的使用,很关键的一点是延时任务是 per key per timestamp 的,这里踩过坑 其它主要问的是 Java 基础和算法题
实现 ImmutableStack 即 pop 和 push 都要生成新的 stack,要求复杂度为 O(1) 二叉树中序和先序遍历数组,求后序遍历数组 实现 36 进制加法 "1z"+"1" = "20"
8
写在前面 大家好,这是一篇超长面经+总结,是对自己上一阶段的梳理,也希望给以后准备找工作/正在找工作的同学们多多少少一点帮助。
基本介绍:普通985本+海外渣硕,大二转到CS专业,大三项目交流3+2,19年10月留学毕业,有工程项目,无实习无额外加分项,主Java研发岗,非battmd级别选手,加一起拿了4个offer,最后准备去星环了。
一,面经集合(按公司划分) 最早是去年的12月开始,中间有几个月在研究室抗压没有面,考虑到读者的阅读喜好所以按公司划分面经,强调一点是时间线很重要,前后自己面试能力也有差距,请留意。一般都是远程视频/电话面,每场面经内问题提问顺序不定。一些过于水的面经没有包括在内(比如8月前的某为,银行)
字节跳动
字节跳动一面12.24(游戏研发 秋招补招)
程序:
1.实现优先队列
2.设计2D游戏功能 输入两个角色位置 输出射击转向角
3.环形buffer设计
提问:
1.二叉树与堆的关系
2.B+树
3.时间复杂度
4.内积点乘叉乘
5.CAS机制
6.重载 重写和多态
字节跳动二面12.28
1.内积点乘叉乘
2.堆
-
排序 各种数据结构
-
时间复杂度空间复杂度分析
-
集合类中为什么不用int(为什么Java集合不能存放基本数据类型,只存放对象的引用)
-
同步和异步
-
多态
-
TCP表头
-
四次挥手
字节跳动一面3.30(服务器研发 春招)
-
链表k次反转
-
DB语句查询比平均分高的学生总数
-
如何查询IP地址是否在国内网段
-
线程池
-
Reentrantlock
-
synchronized
-
组合索引
-
JVM内存结构,类加载信息存储在哪
9.数据库的隔离级别
- cookie在http报文的那个位置
字节跳动二面3.30
-
磁盘文件到JVM的加载过程
-
类存在的意义
-
如何确定session存放值比如用户id
-
手写生产者消费者模式
-
a数组用b数组顺序排序
字节跳动7.17(研发 秋招提前批)
-
查找树中连接两个节点最大路径
-
进程间通信效率最高的方式
3.共享内存怎么实现
- Mysql四种隔离级别
5.Mysql InnoDB和MyISAM区别
-
Mysql profile是做什么的
-
Redis负载均衡 热键和大键的影响
8.Redis主从机制 分片分布式
-
缓存怎么实现
-
LRU和FIFO
-
分页原理
12.tcp拥塞控制
-
http报文头结构
-
http报文长度边界字段
字节跳动8.18(秋招)
-
http和https
-
time-wait和close-wait
-
最左看二叉树第一个节点
-
mysql左前原则
-
innodb索引 b+树子节点一定存表行信息吗
-
redis持久化 主进程和子进程
-
有序集合数据结构怎么实现
-
jvm判断回收
-
minor gc和full gc
-
类加载过程
-
java四种引用
-
方法区
-
项目
-
队列集合怎么实现的,有哪些
-
类加载过程的不足
-
blockingqueue怎么实现阻塞
-
哪些对象可以作为gcRoot
字节跳动8.18二面
-
dns过程
-
dns递归调用和叠代调用
-
tcp可靠性含义
-
tcp可靠性应用
-
拥塞机制
-
长连接短链接
-
http常用首部字段
-
select函数,epoll函数
-
静态链接库和动态链接库
-
进程和线程
-
编译和链接的区别
-
最大连续和dp解法
面试总体体验很好很全面,我基本都是二面挂,每次都是面挂之后总结重新刷新知识库,然后学习很多。
阿里
阿里巴巴7.24(一二面在一天,秋招提前批)
-
项目
-
大数据优化内容
-
口述程序整数反转
-
zk的作用
5.kafka的partition
-
kafka中一个broker故障,会怎么办
-
flink如何实现exactly-once语义
-
flink的实现原理
-
其他流处理框架与flink的区别
-
spark如何处理流处理
-
storm如何处理流处理
-
lambda框架原理
-
如何解决超卖问题
-
如何用算法解决高并发
-
如何大数据快速查询一条数据
-
redis存储数据,在工程中的作用
-
怎么做evaluation验证flink效果
阿里准备的最多,面试官安排了三面,不过和三面面试官商量了下,我10月毕业,他们招11月之后的,为了怕被泡池子(因为能力并不突出)还是放弃了。
腾讯
腾讯 3.7一面(春招实习)
-
Java多态的实现
-
TreeMap和HashMap的区别
3.MySQL索引底层的实现
-
什么是NoSQL,NoSQL的常见应用
-
Redis的数据结构
腾讯3.8二面
-
GC是怎么判断年代的
-
浮点数怎么存储
-
什么是TTL,什么是TraceRoute
腾讯3.20三面
1.项目,大数据框架了解
2.GC回收
-
网络查找命令
-
Linux磁盘命令
5.网络第二层和第三层有什么区别
6.linux的常用指令
面试官说理论还可以,具体操作能力不行。。
腾讯 8.9(秋招提前批)
自己讲:
-
JVM
-
linux内核
-
zookeeper
-
kafka消息队列
-
数据库mysql和redis
-
分布式事务
-
微服务框架
-
网络攻击
-
代码耦合性
-
项目完成背景
-
TCP,UDP
期间提问:
-
Zab协议
-
进程地址存储
-
网络编程IO多路复用
-
网络传输模型
-
IO过程
-
新的微服务框架
王者荣耀项目组。。。我还说我不喜欢玩王者哈哈哈(一个半小时脑子晕掉了)
拼多多
拼多多3.25 一面(春招 java岗)
1.jsp到servlet过程,servlet生命周期
2.http与https区别,传输过程,如何交互
- hashmap结构,concurrenthashmap结构
4.线程池声明与使用
-
JVM内存模型,垃圾回收
-
Tomcat运行原理
-
手撸死锁模型
-
流处理与批处理区别
9.storm和flink的区别
10.怎么学习的
拼多多3.28 二面
-
手撸适配器模式
-
手撸代码并查找边界错误
-
Spring MVC框架
-
BASE原则
-
分布式原理CAP原则
-
Java反射
-
private属性,final类型举例
-
ReadWriteLock
-
数据库-四种隔离级别-脏读/幻读/-索引
微信视频面,最后问了我要不要去大数据研发,我拒绝了,当时比较傻缺
晨星
晨星3.26(一面)
- 网络:tcp udp区别
http协议介绍
- 面向对象 抽象类和接口区别
3.单例模式实现
-
数据库索引
-
Js怎么面向对象
-
装饰器模式原理
7.静态类和单例模式有什么区别
-
设计一个股票推送的设计模式
-
容错分析题:页面加载慢原因
晨星二面(留的作业)
1:请在数据库设计两个表,分别存储股票每天的交易数据表,和上市公司的运营数据表
,画出相应的数据表和对应关系。
- 请用TF-IDF算法计算相关度,并采用适当的机器学习训练模型来进行训练,找到更高的筛选文档准确率
3.聊人生
然后就是hr面了
BiGo
BiGo一面12.20
-
原始项目介绍
-
Java HashMap/TreeMap
-
多线程方法
-
JVM GC算法
-
死锁
-
Flink
6.static关键字
7.数据库常见支持类型
- char和varchar的区别,优缺点
9.索引的种类
-
联合索引最左原则
-
索引底层:B+树,散列,位图
-
java hashmap put操作
-
hashmap扩容,承载因子
-
设计模式在自己工程中使用举例
二面
聊项目
第一个面的公司(当时还不知道bigo是什么公司。。)感觉当时bigo真的很缺人,主管还加了微信聊了很久,可是当时真的很菜,多线程一窍不通。。
海康
海康威视7.17 电话一面
-
项目
-
zookeeper怎么实现分布式锁
-
分布式锁作用
-
Hashmap,concurrentHashmap
-
redis分布式配置
-
redis持久化
-
redis单线程作用
-
单例模式
-
项目中遇到的OOM问题
-
怎么监视JVM数据
海康9.21 现场二面
-
hbase读写过程
-
flink工程
-
设计通过flink查找9点10分各个路口通过车辆的信息
-
学习flink的方法和途径
-
jvm错误排查 oom排查 jvm问题:垃圾回收时间过长
-
十个kafka消费者线程消费,如何设计在多线程场景下完成统计
-
工程
b站
bilibili 8.6 一面
-
redis预热
-
redis存储数据
-
zookeeper原理 ZAB协议
-
zookeeper加节点
-
分布式锁种类
-
zookeeper分布式锁,redis分布式锁
b站8.14 二面
-
项目
-
怎么做项目测试
-
java Threadlocal类(线程变量本地化)
-
mysql存储引擎
-
sql优化
-
进程线程区别
-
SSM框架常用注解
-
自定义注解
星环
星环 8.9 电话一面
-
工程flink的checkpoint的具体过程
-
checkpoint对系统有什么影响
-
int和integer的区别,装箱与拆箱
-
怎么调用integer的方法,具体过程
-
java内部类和静态内部类
-
二叉树前序遍历
-
best time to buy and sell stock最多二次买卖
-
常见设计模式
星环8.27 视频一面
-
c++static
-
java static
-
操作系统栈和堆区别
-
存储代码段
-
缓存,缓存不一致性
-
tcp与udp应用场景
-
聚簇索引与非聚簇索引
-
join的种类以及实际操作
-
编程:二叉树按层遍历
-
尬聊了一会儿工程
二面
-
子数组和为0 dp算法
-
flink怎么保证exactly-once语义
-
高并发环境怎么做测试
-
常用的检查系统failure的方法
-
java堆怎么排查错误
-
工程
感觉主要是临场写代码,还问了我好多测试的内容?
三面
-
c++虚函数
-
fibbonacci算法改进
-
redis怎么存储数据
-
redis存的key是什么值
-
MySQL的ORM方式
-
mybatis怎么对应实体
-
applicationcontext逻辑
-
bean的生命周期和种类
-
flink的检查点机制怎么改进?
-
flink窗口
-
flink的任务失败模型
-
还有很多工程上的细节
狂怼项目,大佬知识量储备极高,我实为弱鸡
有道
有道8.24
-
网络可靠传输
-
tcp报文结构
-
网络传输模型
-
拥塞机制
-
流量控制
-
linux内存磁盘转化
-
linux线程状态
-
linux页表结构
-
内核怎么处理线程(初始化,加锁)
-
操作系统与jvm的不同
-
类加载过程
-
线程怎么去访问jvm里的类信息
-
pthread
面的java岗,当时想终于可以被问java相关了,结果给我来这个,问线程间通信方式的时候唯一一次轻怼面试官,接着就开始问POSIX了。
网易互娱
网易游戏8.28 一面
-
操作系统进程分配区,内存管理
-
io多路复用
-
操作系统层面怎么实现互斥锁
-
数据段组成
-
网络tcp建立与释放
-
tcp长连接 heartbeat
-
tcp半连接
-
图的遍历算法 迪杰斯特拉算法
-
上楼梯
-
64匹马赛跑,8个跑道,选出最快4匹马
-
java单例模式一套
-
java多线程原子锁,cas机制,aba问题
-
缓存置换lru实现
-
图形学了解
15.快排实现
-
堆排序实现,怎么建堆
-
cpu分配时间片算法
网易互娱10.15 二面
-
项目
-
输入整数n,输出1-n的随机数组(约瑟夫环?)
-
链表成环,并找到入口节点,数学推导
种种原因 面试拖了好久
深信服
深信服 8.17
-
4个项目挨个问
-
C++的new和malloc
-
C++重载
-
进程间通信的互斥方法
-
堆和栈的区别
-
介绍进程和线程区别
-
linux内核
-
介绍每种设计模式以及应用
9.单核cpu多线程
- 指针有了解吗
11.文件软链接硬连接
二面
-
linux 怎么进shell
-
linux的swap分区
-
网络tcp四次挥手
-
应用层协议http post和get请求
-
jmeter集合测试
-
大数据有哪些failure 怎么应对
-
分布式架构的性能优化
-
mysql存储引擎
-
xss攻击,sql注入
-
网络虚拟化技术是什么,常用平台
值得一提的是深信服hr真的知识面好广,给我讲的业务划分和概念很细hhh佩服
依图
依图 9.4
-
项目
-
zk用途,分布式锁
-
redis分布式锁
-
括号匹配编程
-
树节点z-order打印
二面重感冒,写了个3-sum的变型题,状态太差了,不过很喜欢这种考察方式,上来没说几句就写代码,写完就完事hhh
招银科技
招银 9.29
-
java基本数据类型
-
java对象生命周期
-
mysql和redis区别
-
线程生命周期
-
多线程好处
-
线程池作用
招银10.12
一面:
数据库mysql的隔离级别
怎么实现多线程安全
jvm的类加载机制和垃圾回收原理
b+树和红黑树区别
二叉树的遍历方法 写按层遍历二叉树
flink和spark的区别
单例模式和适配器模式
二面:
工程达到的效果,输入是什么输出是什么
有点像毕业答辩
感觉比较水。。。
二,知识点汇总 考过的面经提取的基础知识点,便于查缺补漏。
算法:双指针,排序,贪心思想,二分查找,分治,回溯法,动态规划,高级算法
数据结构:数组,链表,树,栈和队列,图,堆,散列表
JavaSE:static,装箱拆箱,多态,设计模式(单例模式,适配器模式,工厂模式,装饰器模式,迭代模式,至少会3个),集合(HashMap,LinkedListQueue, ArrayList, PriorityQueue, JUC包里的集合),NIO
多线程:CAS机制,volatile,synchronized,JUC包(CountDownLatch, Reentrantlock, FutureTask,ReadWriteLock)
JVM: 垃圾回收算法,垃圾回收器,类加载,内存模型,OOM处理,工程优化
JavaEE:SpringBoot,SpringMVC,AOP,IOC,MyBatis,Hibernate,微服务框架
分布式理论:CAP,BASE,2PC和3PC,Paxos,ZAB协议
操作系统:linux,进程与线程,IPC方式,PIV,shell,页表结构,同步异步,epoll函数
数据库:MySQL,ACID,索引,InnoDB,MyISAM,MVCC,NoSQL,Redis
网络:网络架构,tcp可靠性,窗口,UDP,HTTP,DNS,IP,ARP,Ping,TraceRoute
其他还有一些加分知识点,工程相关大数据/服务器框架组件(kafka,zk,Hbase,hdfs,flink,spark,storm,nginx,yarn等),微服务框架的几个,网络相关的一些概念(sdn,网络攻击类型,nagle)。每个词条都有自己完整的知识体系。
三,学习工具推荐
-
写博客是很好的习惯,各大博客网站多看多想
-
每个知识点掰开揉碎要讲的东西很多,不能浅尝辄止。
-
看书很重要,知识体系会有一个完整的整合过程。
基本好书可以多看几遍,比如一些经典教材,深入理解JVM,Effective Java,java并发和深入剖析tomcat,图解系列,MySQL技术内幕,从paxos到zk一致性,有些书内容有些过时不过有些部分很精彩可以参考,操作系统我没找到什么好理解的书,有想要资源的可以私信。
四,关于笔试 我总共参加了50场左右笔试,每次笔试答题过程都会存在本地ide,从刚开始的都不会到最后可以A满4题 也是自己训练了很多,以下是自己的过程总结:
先从算法导论那本书入手,熟悉基本算法和基础集合的初始化,刚开始会很艰难,尤其是排序算法,我建议还是多练多会,对以后的提升很重要。
然后在leetcode上找题,刚开始我先找easy题做,做了50道左右感觉可以完整的解出一道题,开始按顺序从头做。一般我每道题会解至少3遍(因为刚开始不太会,先早上按照答案抄一遍,然后凭借印象自己A一下,晚上的时候再A一下,三天之后再A),每天做3道题左右,这种情况持续了一个半月吧,当时效果其实不太明显,不过后期还是有收获的。
leetcode上刷了200+之后转战牛客,因为企业面试现在用牛客比较多,而且我比较喜好牛客什么都没有写的ide,比较舒服。牛客上开始刷剑指offer,其实第一阶段我就偶尔有刷,不过这一次是有底气的刷,刷完之后觉得剑指offer应对笔试面试还是神器,所以以后每次要面试写代码的时候我都有看这个。
后来就懒了,每天在牛客的题库找两三道题做,直到把经验值刷到10为止。
以上过程仅供参考,请理智食用
最后关于笔试作弊,请不要拿社会什么的做借口,作弊可耻是基本常识,并不会因为形势或人数的因素而改变,扎实的代码能力肯定有用的,现在多吃点苦是值得的。
五,关于面试 有技术只是入场券,拿offer还是要一定的运气。当然,很多大牛之所以为大牛是因为平时积累的就足够多,会议论文,acm竞赛,大厂实习,科研创新成绩等等,非大牛的我们就要做好任人挑选的准备,态度端正到最后一刻,有比较烦人的面试官是常事,保持心态很重要。
面试官:“最后有什么问题要问我的吗?”
我一般是问一些公司业务,和进去之后做什么工作,然后直接问后续流程(我觉得挺好的,既能节省彼此时间也能直到自己一些技能点不足,下次面试加以改进)
六,关于选择 不要给自己太大压力,找工作和考试不一样,要顺着自己的心意在自己可达的范围内找合适的,不是追高(当然有上进心是好事)。努力很重要学会放下和生活也很重要。研发岗位有游戏研发,服务器研发,客户端研发,面向各种语言的研发,大数据研发,网络工程研发,安全研发等等,不同机构和公司业务要多少了解一点再选比较好。比如游戏岗几个经典考题(洗牌算法,搭配算法,动态规划,经典数据结构树,链表的考察),服务器研发针对各部门要求会有变化,感觉操作系统会多一些
七,一些Q&A
- 内推有用吗
感觉内推不能太重视也不能过于轻视。有的公司内推纯粹是调用职工积极性来吸引简历,没有实质用途,比如网易?有的公司真的可以加快进程,提高成功率,所以还是提前找内推比较好。
- 面了hr面之后就稳了吗
我面了7个场最终面(有的公司没hr面),最后到手的offer只有4个,成功率57%。
- 留学生x月毕业算应届吗
感觉一般公司还是会介意,
我的情况 虽然没有明确拒的公司但感觉有介意这个问题的公司:b站,星环,海康
秋招明确拒了的:美团 拼多多 百度提前批,阿里
其他的没有提到过。
- 招聘信息在哪得到的
牛客网,微信群,公众号,学长内推,各公司官网。以此为契机能交朋友也是好事。
- 马上面试了,听说要手撕代码,我一点不会写代码怎么办
赶紧背按层遍历二叉树,我一个人就考了三四遍也是晕
- 行测需要准备吗
行测题都差不多的,实在担心的就刷一刷题,一般行测分查不会很大,主要是性格测试,我的经验是想象一个乐观团结积极向上的人会怎么选,有些中肯题如果是银行就保守型选,如果是互联网公司就激进型选,具体也靠情商。
一些共同点:需要强调的是简历很重要,总体来说今年秋招感觉还好,不过bat选手的简历基本都有同样的特点,可以找别人去参考,实习经历(很重要),会议论文,大赛经历,有的一定要写。如果像我都没有的话就要自己找工程去做,如果你的工程比较好,拿得出手,一般面试官都会死扣项目,你要对你的项目了如执掌;如果面试官觉得你的工程一般,就会往知识点深层去挖,你要保证这一知识点你比别人要了解全面并告诉面试官你很懂。
所有提到的内容都可以私信找我,学习历程可以参看我同名的博客。
最后,最重要的是,希望可以结交更多的哥哥姐姐弟弟妹妹,共同进步,有时间可以在上海一起玩。