前言
从二月初开始投简历,到现在字节入职一周,也两个多月了,想抽空记录一下最近的一些经历。
1. 心得体会
牛客网别人的帖子:
找实习不外乎笔试和面试,笔试没什么好说的,就是刷LeetCode和牛客网各公司往年的题,面试的话最好系统的复习基础知识,面经是用来查漏补缺,不适合打基础,每次面试最好能够记录下面试官的问题,方便后续总结经验。
1. 简历
简历建议包含的内容:
- 个人简要信息(简短):姓名、电话、邮箱、学校、求职意向
- 教育背景(简短):学校、专业、毕业时间、GPA、XXX奖、硕士研究方向、做过什么重要项目、学术成果、专利
- 专业技能(简短并说明每种技术你的掌握程度,方便面试官问):Java(并发、JVM…)、DB、Cache、中间件、分布式系统、云原生、软件架构/设计、框架、算法…
- 项目/实习经历:依据STAR法则介绍,重点突出你的贡献、项目难点、解决方案、取得成果、项目管理,项目经历应该标记项目开始时间、结束时间
写简历要考虑清楚:
- 内容要有干货,引起面试官的兴趣,考虑他根据你提供的这份简历能问你什么,应该通过简历引导面试官问你的问题
- 内容要有深度,不能只停留在使用层面,如果只在使用层面没什么好问的。面试官一般会先问你怎么用的,为什么用这个好处是什么,然后问你他的原理是怎么样的,最后看看你对这个东西的思考,怎么优化,联系到其他相关的东西…
2. 自我介绍
- 自我介绍保证能在3分钟内讲完, 必须包含学校/专业/研究方向
- 自我介绍重点是介绍自己过去的一些经历/成就, 通过这些经历/成就有目的的在面试官心里构造你的人设, 而非简单的介绍你做过什么, 可能包括以下几种, 自己想一下:
- 学霸/认真: 比如 GPA很高/保研/奖学金 经历
- 热爱编程/技术好有geek精神: 比如开源项目 (有一定star), 博客文章 (阅读量), 阅读过哪些源码, 学习使用过哪些比较新的技术
- 乐观/主动…
- 善于沟通/有组织力/有执行力/乐于分享… 比如组织同学一起做项目, 向同学分享你的资料
- 开发+N(其他技术): 开发+云, 开发+算法, 开发+…
- 自我介绍中不需要详细介绍你的项目, 可以简单介绍一下你做过什么项目, 不要具体到你做了哪些
- 自我介绍中不要写一些在真正讲的时候都不会说出来或没意义的话, 比如很希望加入你们, 很高兴参加面试
2. 面试问题
ICBU国际站技术部
- 自我介绍
- 大数据是什么,和普通项目区别
- MySQL和ES之类大数据框架之间的区别
- 实习项目介绍
- Zookeeper实现原理,在Kafka中作用什么,为什么不用MySQL存储这些信息,因为单机内存数据一致性,分布式环境下数据不一致,需要分布式锁等等
- Zookeeper分布式读取一致性
- 多个Client竞争Zookeeper写入?
- 单机环境下的锁
- HashMap介绍,为什么不是线程安全的
- HashMap的线程安全实现
- 垃圾回收过程,为什么新生代老年代回收算法不一致
淘系技术部用户增长团队
- 实习项目,问的很深,项目整体架构,ssh,mvc
- Spark常用函数接口,Spark SQL,DataFrame
- Scala相关问题
- HDFS相关问题,Client如何知道数据存储在哪
- 你知道的常见的数据结构,光说了List,Set和Map,面试官说红黑树?
- Map和HashMap的区别,面试官建议好好学习数据结构
- 写过MapReduce么
- MapReduce过程中Map和Reduce阶段发生数据倾斜怎么办?
- 机器学习掌握
- Java并发,面试官建议好好学习Java基础
- MySQL和MongoDB之类深入问题
淘系技术部用户增长团队
- Java中数据结构,平时学习中的数据结构
- JVM了解多少
- MapReduce过程,哪个过程比较重要,知道溢写
- Zookeeper的选举流程
- 机器学习算法
- 实习项目介绍
阿里妈妈淘宝联盟
- 介绍一下实习项目,挖得很深!模型关系如何存储,模型是什么,Kafka集群规模,Kafka实现原理,Kafka如何生产,如何消费
- Zookeeper如何Kafka选举,Zookeeper的作用
- 分布式一致性协议,Paxos算法和ZAB协议
- Kafka和ES之间如何处理脏日志,脏数据
- 关系型数据库MySQL和ES的区别
- 项目介绍,HDFS热点问题?并发问题?数据库主键?
- Spark Streaming原理
- MySQL索引
- 冒泡排序,希尔排序,归并排序时间复杂度,是否稳定
- 为什么选Kmeans算法
- Java内存模型,方法传递参数
- 垃圾回收算法
- Spring AOP实现
- Java并发常用关键字,JUC包下常用组件实现
阿里云块存储
- 进程与线程的对比,线程是如何调度的
- 进程的调度算法
- fork的子进程优先级,优先级是否可以调整
- CPU使用率过高如何定位,如何解决
- 进程之间通信方法
- 死锁产生的原因,如何预防死锁
- I/O如何落盘
- 数据库索引
- SQL执行过慢怎么办,作业中遇到过么?
- 快排
- 项目介绍,问的很深,数据流形式,技术如何选型,难点,数据库表如何设计,如何机器学习的评价,执行的时间,字段问题,数据可信度
- 不同数据库使用
- 实习项目,准备比较充分
- HDFS写流程,NameNode如何选取DateNode,写的时候第二个快网络错误怎么办,如何修复不完整的快
- Zookeeper选举流程
阿里云城市大脑
- 自我介绍
- MapReduce任务执行流程,Shuffle详细过程
- 实习项目介绍,Kafka的offset存储位置
- HashMap1.8插入过程
深信服大数据开发1面
- 说说你熟悉的设计模式
- 说说Zookeeper中影响比较深的设计
- 说说分布式一致性协议
- 说说实习项目,你在其中做了什么
- Elasticsearch副本分片
- 宽依赖窄依赖,Spark什么时候会提交任务,Spark看过源码么
- Kafka为什么高吞吐,消费组对Topic的消费
- Java NIO,Kafka零拷贝
- 用户空间和内核空间
- 分布式存储
深信服大数据开发2面
- 详细的实习经历,实习的收获
- 介绍Kafka架构
- 如何保证Kafka数据一致性
- 你觉得Kafka的性能瓶颈在哪,内存,磁盘I/O?
- Zookeeper在Kafka中的应用
- Spark项目介绍,项目难点
- Flink项目为什么会有收藏
- 如何实现LRU
- 海量数据聚合操作,判断海量数据由几个取值
- 介绍倒排索引
- JVM运行时区域
深信服大数据HR面
- 自我介绍,实习经历
- 家庭介绍
- 项目经历,经历最深的难点,同学合作,如何解决困难
- 研究生期间生活
- 学习规划,工作规划
- 性格
- 最大的冲突
- 别人对你最反感的地方
- 对深信服的了解
美团到店事业群1面
- 自我介绍
- 项目介绍
- 写SQL
- 冒泡排序
- equals 和 ==, ==值相等,地址相等
- isEmpty和size==0,效果一样
- 接口和抽象类的区别
- wait和sleep
- 为什么重写equals后需要重写hashcode
- linux下常用命令
- 进程与线程之间的关系
- 内存使用率为100%的原因
- 进程通信
- 死锁如何避免
- 前序遍历中序遍历和后序遍历的应用
- 如何计算1 + … + n,使用公式
- http,tcp和udp是哪层协议,tcp和udp有什么区别
- tcp如何保证可靠性
- cookie和session
- 数据库四大特征,原子性,隔离性,一致性,持久性
- 什么时候使用索引,什么时候不使用索引
- 联合索引
- 为什么使用B+树
- union和unionAll,left join和right join
- delete,drop,truncate
- explain
- 数据库和数据仓库
- 星型模型和雪花模型
- MapReduce过程,Shuffle过程,把部分会产生数据倾斜
- ES的分片,shard
- 倒排索引
- 如何学习新技术
- 哪部分表现的不好,自己的缺点
美团到店事业群2面
- 自我介绍
- 对大数据生态的介绍
- Kafka如何保证消息不丢不漏
- Kafka集群中宕机问题,不太理解问的是什么
- Zookeeper有啥用,集群为什么要选主?
- Zookeeper选主有啥优缺点?
- 数据库不同执行引擎
- 数据库底层join是如何实现的?
- SQL中的函数
- SQL优化,实践案例?
- 数据建模问题,如何设计数据库表,第一步抽象
- Spark项目介绍,遇到的问题,有什么亮点,有什么难点
- 你用过哪些设计模式
腾讯天美工作室1面
- 自我介绍
- 实习介绍
- 项目介绍
- 分布式一致性协议2pc,3pc,paxos,raft
- valotile
- 垃圾回收
- 强引用,弱引用,软引用
- 网络编程
- 继承和接口,什么时候继承,什么时候接口,可以多继承么
- 一个数二进制中1的个数
- 如何将.sort函数改为稳定排序
- 翻转链表
- 二叉树的最近公共祖先
腾讯天美工作室2面
- 自我介绍
- 实习介绍
- 进程和线程,多线程之间会共享什么,什么是线程私有的
- 线程同步
- Synchronized和ReentryLock
- 避免死锁,代码层面
- 进程通信
- 函数调用与系统调用,Linux如何进入内核态
- 中断,端对其,select
- equals和==
- hashcode,有啥作用
- StringBuilder和StringBuffer和String
- 静态方法里能引用非静态变量方法么
- ArrayList和LinkedList
- HashMap和TreeMap
- 集合里foreach里可以删除元素么,你怎么办
- TCP和UDP,TCP粘包
- 介绍Zookeeper
- 数据库范式
- 数据库索引,索引越多越好么
- explain
- 写个单例
- 类似单词搜索的DFS
- Top k
- 高考排名
- 游戏匹配机制,如何1000万条数据,你说了哈希,如果某台机器挂了呢
字节跳动Data1面
- 自我介绍
- 你对大数据的了解?
- HDFS 2副本 5副本的好处和坏处
- MapReduce实际问题
- HashMap介绍,红黑树,什么时候扩展
- 一个SQL的执行顺序,这条语句哪里可能会有性能问题
- 36进制加法
字节跳动广告系统1面
- 自我介绍
- Kafka如何保证消费的顺序性
- Kafka的partition,如何主从同步
- 最终一致性,如何达到最终一致性
- Zookeeper如何保证一致性
- 倒排索引
- 介绍MapReduce,Spark和Hadoop中的shuffle有什么区别
- 卷积有什么用,池化有什么用,没有池化会有什么后果
- 算法题[1, 0, 3, 2, 1, 0, 1]排序,如果是1-n呢
- 为什么选择大数据开发
- MySQL索引
- 两个特别大的文件做关联查询,怎么做
- ArrayList和LinkedList
- 跳表
字节跳动广告系统2面
- 自我介绍
- 介绍ZK和Kafka
- Zookeeper如何主从数据一致,ZAB协议
- 二阶段提交,三阶段提交,Paxos
- Kafka如何保证精确一次
- 实例,如何设计计算引擎select c1, countDistinct (c2) from index1 group by c1 where c2 < 3
字节跳动广告系统3面
- 自我介绍
- 彩票问题,我按水塘抽样写了,不知道对不对
- 解决过比较难的问题
- 企业开发流程有什么不同
- 集成测试有什么好的覆盖
- 未来的发展方向?
星环科技1面
- 项目介绍
- Spark Streaming运行流程
- 进程通信
- 网络模型
- TCP三次握手,四次挥手
- Redis为什么快
- 链表中间节点,判断有环,环的入口,链表相交
- HashMap的锁粒度,重回分段锁
星环科技2面
- 自我介绍
- Flink滑动窗口
- Spark和Flink的区别,有什么Flink做不到的Spark能做到?
- Spark GraphX,MapReduce如何实现聚类?
- ZAB协议
- Zookeeper权限管理
- Spring事务注解如何实现
- Synchronized
- 线程池,拒绝策略
- 设计模式
- JVM内存区域
- 实习介绍
星环科技3面
- 自我介绍
- 实习介绍,提交offset时挂了怎么办,重新消费消息?消息中有唯一id,kafka支持事务前的一些业界解决方案?如何确定partition的数量?
- 编程
蚂蚁金服大数据部1面
- 自我介绍
- 实习介绍
- Kafka的作用
- Kafka和其他MQ的区别
- 为什么Kafka高吞吐,为什么高性能
- 消费者组的概念
- Kafka解决重复消费
- Kafka如何保证消费顺序
- 类加载过程
- 双亲委派模型
- JVM内存区域
- equals和==
- 大数据无法加载进内存,如何求top10,如何是分布式环境下呢?
- 项目亮点,难点,优化
- transformation和action
- 如何理解Spark是基于内存的
- MapReduce和Spark的Shuffle区别
- 逻辑回归
- 数据倾斜,如何解决
蚂蚁金服大数据部2面
- 自我介绍
- 比较好的编程案例,实习吞吐量多大?
- Kafka基本架构
- Topic和Consumer Group,Group有啥好处
- Topic中数据partition分布不均匀怎么办
- Kafka数据实际存储方式,如何使用index查询具体log,log文件命名方式
- Kafka offset的存储
- ZK运行原理
- ES基本架构
- ES读写调优
- ES读数据过程,ES轮询,Kafka呢?用ES来做什么
- 实习项目数据流转
- HBase和Hive,为什么数仓用Hive
- HDFS基本架构,如何理解StandByNameNode
- HDFS读数据
- 物理隔绝的HDFS集群,你如何向管理人员申请端口
- 类加载过程
- 类加载器
- 双亲委派模型
- HashSet和HashMap
- HashMap1.8安全么,扩容过程,为什么扩容2倍
- 编程中印象最深的bug
- JVM内存区域
- 进程和线程
- Java创建线程的方式,有什么区别,Thread中start和run的区别
- wait和sleep
- Synchronized
- 什么时候Full GC,频繁Full GC有什么危害,如何解决
- 机器学习,决策树,信息熵,如何预防过拟合,KMeans,优缺点,逻辑回归,随机森林
- 算法题,数据中找到两个值的和是指定值
快手数据中台1面
- 编程:n个数中最小的k个数,让自己构建堆
- 编程:拓扑排序
快手数据中台2面
- 自我介绍
- 数据结构
- ArrayList和LinkedList
- List如何遍历,foreach和索引遍历区别
- 介绍Map,HashMap,什么时候会冲突,如何避免冲突,HashMap如何保证查询时O(1)
- 常见的树结构
- 二叉树中序遍历,递归如何实现,深度递归问题,如何避免深度递归,动态规划使用场景,分治和动态规划区别
- Java内存模型是什么?
- Volatile,和synchronized的区别
- AutoInteger,如何保证安全,多线程对它进行修改一定线程安全么,ABA会影响上面的结果么
- 螺栓螺母配对问题
- 编程:实现LRU
快手数据中台3面
- 自我介绍
- ZAB协议,和二阶段提交有啥区别
- Spark有啥好的编程实践
- Spark和Flink的区别
- 二维矩阵找到被0完全包围1的个数
- 单词集合,找到两个单词完全没有重复字母且乘积最大
- 计算根号n
3. 写在最后
春招不是结束,未来还有实习和秋招,还有很长的路要走,好好思考自己想要什么,如何持续学习,如何平衡工作和生活。
希望我们最终都能过上想要的生活。