字节跳动 0基础 客户端开发 一二三面经(已意向书)
[TOC]
一、写在前边的话
首先,个人认为面试官会问什么取决于很多方面:
- 面试官的习惯(废话)
- 个人教育经历
- 简历所呈现的内容
1. 面试官的习惯
不具体展开2. 个人教育经历
这个我认为很重要,我自己也会看很多面经,有些面经很简单,有些面经很难,有些面经1道题,有些面经3.4道题。我个人认为这个和你的教育背景有很大关系。 - 如果你的学校够好(比如top2),可能面试问的问题不会那么全面,题目考查也不会那么多,面试过程可能很轻松愉快,这是学历背景加成
- 如果你学校不那么出名,可能面试官会百般刁难,题目问的很深,算法题数量很多,面试官需要你证明你自己
所以希望大家看面经理性看待,结合自己的实际情况分析,不要太怕3. 简历所呈现的内容
贴一段自己简历里写的技能描述(希望大家批评指正)- 熟悉Java语法,多线程、集合等基础框架
- 对JVM原理有初步了解,包括内存模型,垃圾回收机制
- 熟悉Linux下编程
- 熟悉Redis和MySQL的使用以及相关原理
- 熟悉Spring,SpringMVC,Mybatis,SpringBoot等主流开源框架,以及Maven等项目构建工具
- 熟悉Python语言,Pytorch深度学习框架
- 了解HTML,CSS,JavaScript等前端知识
面试官会根据简历里所写的内容进行提问,所以写什么真的很重要
二、 一面 8月13日
- 自我介绍
- 算法题——反转链表(先说思路再写,很快写完)
- 算法题——给一个数组,找出数组中所有满足条件(该元素满足不小于左侧的所有元素,不大于右侧的所有元素)的元素的index
- 单例模式(我写的懒汉线程安全)(volatile,二次判断的作用,饿汉的缺点,有没有可能破坏单例,加锁的级别)
- 类锁和方法的锁
- 乐观锁悲观锁,CAS
- 自旋锁,线程状态切换,阻塞等待的区别,wait sleep,不同状态会不会释放CPU
- HashMap深挖,重写equals为什么要重写hashcode
- LRU使用场景,这里说到了redis内存模型
- HashMap存储int和long的缺陷(指针所占用的内存已经超过了要存储的数据的内存,存储效率低)
- 针对基础类型优化的map是否了解(我不清楚,问了一下面试官有什么,他说有ArrayMap)
- HashMap 是否线程安全,有哪几种线程安全的(三种),他们之间有什么区别
- ConcurrentHashMap 原理,JDK1.8和JDK1.7的不同
- HTTPS和HTTP的区别
- HTTPS详细介绍 非对称加密,数字签名
- TCP UDP的区别 UDP如何实现可靠传输
- get和post的区别 get是幂等的吗
三、 二面 8月14日
- 自我介绍
- u盘为什么不能拔插
- 剪切和复制文件的区别
- 删除文件的原理,文件恢复软件的原理, 怎么样才能避免文件恢复
- 保存一本txt小说需要往磁盘中写多少数据,如果往小说中间增加文字再保存呢,会写入多少数据?为什么小说会这样,而数据库不会?
- 进程和线程的区别
- 虚拟内存
- 进程之间通信的方式,具体介绍共享内存(流程,如何通知其他进程)
- 页缺失,为什么会页缺失
- 线程不共享内存的方式
- ThreadLocal具体原理
- 实现ThreadLocal(完全不会写,在面试官提醒下写出来了)
- 算法题——在一个数组中,寻找两个数等于target,找出所有可能的答案数,[1, 1, 3],target为4的话 [1, 3][1, 3]算两种
四、 三面 8月18日
- 介绍实验室科研项目
- 介绍项目 + 深挖
- 如何渲染一个前端页面(前端的问题,不太会)
- 如何提高HTTP的建立连接的速度
- 问我为什么跨专业
- 算法题 给一个长度为m的char[] + 长度为n的str,判断str中有没有连续的长度为m的子串由char[]中所有字符组成,有的话返回起始位置的index,否则返回-1(代码第一次没写过,自己加了几个println进行查错,最后改对了)
五、最后
许愿拿到offer,也祝福大家拿到心仪的offer