字节跳动客户端提前批面经整理
本来想整理全一点的,以后有时间或者秋招的时候再按知识点类别整理一遍。
这次提前批,因为想着没准备好,16号最后也没报字节的提前批
7.6字节跳动提前批-客户端开发一面面经
1.自我介绍
2.编程,leetcode03
网络
3.http和https的区别
4.https建立连接的过程
5.https抓包工具是如何实现的
语言
6.java的equals()和==的区别
7.java常用的容器有哪些
8.java的多态和继承是如何实现的
9.java的内存管理机制
10.java多线程中的锁你用过哪些
操作系统
11.进程间通信哪几种方式
12.线程间通信有哪几种方式
13.虚拟内存,共享内存和常驻内存的区别
14.虚拟地址,逻辑地址和物理地址的区别
15.逻辑地址如何转成物理地址
16.死锁发生的条件
7.6字节跳动客户端一二面凉经
一面 45min
1.问项目
2.java都有哪些锁
3.synchronized锁升级
4.CountDownLatch原理
5.介绍ReentrantLock
6.死锁的情况 举例说明
7.进程线程
8.进程间通信方式
9.手撕DCL单例
10.剑指Offer24 链表反转
二面 50min
1.自我介绍
2.问项目
3.InnoDB与MyISAM区别
4.java代码到执行发生了 什么
5.双亲委派模型
6.Excutor,线程池
7.手写一个线程池,嗯????
8.LeetCode 146 LRU缓存
总结:二面的编程题卡了好久,最气的是我之前还刷过,最后磕磕绊绊只写出来个了大概。看到面试官面如死灰,基本是凉了。
7.12【2021校招提前批】字节跳动-客户端开发面经链接:https://www.nowcoder.com/discuss/446833?type=post&order=hot&pos=&page=1&channel=2000&source_id=search_post
final关键字的作用
进程和线程的定义,进程可以操作哪些资源,进程的内存控制
TCP和UDP,区别、联系和使用场景
HTTPs相关,说了一大堆(把RSA+GCM+SHA256的流程都讲了一遍),但是忘了说数字证书,被小哥提示了
HTTP响应状态码
有没有接触过网络编程
编程题:二叉树和为target的路径:定义从根节点开始、叶子节点结束为一条路径,返回所有和为target的路径。(DFS+Backtrack)
二面
Java内存管理(程序计数器、Java栈、本地方法栈、Java堆、方法区那一套)
Java GC算法介绍,适用场景,四种引用
内存对齐???(没有听说过)
数组和链表的联系和区别,适用场景
遍历二维数组,按行遍历和按列遍历效率是否不同(只知道不同,不知道为什么)
面试结束后查的资料:
二维数组的内存地址是连续的,当前行的尾与下一行的头相邻
现代计算机,在CPU与内存之间还有一种存储机制,那就是CPU缓存(cache)。CPU缓存的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。
访问数组元素时,CPU不会每次只从内存中读取一个元素,而是读取一个区域的元素。假设二维数组的大小为(10 x 10),访问第一个元素时,CPU也会读取它的相邻元素,因为这个数组比较小,CPU一次就可以把所有元素缓存,因此无论是按行访问数组还是按列访问数组,CPU访问主存的数量都相同。随着数组元素越来越多,CPU缓存一次只能读取数组不到一行的数据,因此按列访问元素时每访问一个元素都要访问内存,因此速度就会慢很多。
数据库的索引是什么?有哪些常见的索引数据结构(b树,b+树)
通过实现Runnable接口和继承Thread类创建线程的不同之处
单线程i++和多线程i++结果的差异和原因
算法题: 给定一个字符串,如“abdkfcefbikbaabbsdsbb”,删除其中所有连续的"ab",最后的结果没有连续的"ab"。
三面
SQL题:有A和B两张表,A表中有学生的信息,包括了学生的班级id,B表中有班级的信息,包括班级的id和班级的名称,要求查询给定班级名称的所有学生的信息。一个嵌套查询搞定(当然级联查询也可行)
Java的GC
7.12字节跳动C++客户端一面凉经
4.static关键字
8.TCP如何实现可靠性
补充一个问题:写出线程中生产者消费者模型代码
10.手撕代码:从无序数组中找到右边第一个大的数(与leetcode 739 每日体温类似)
7.12
字节跳动客户端提前批一面
3、进程和线程的区别
5、htttp服务器是怎样解析数据的?
6、死锁的概念
7、进程通信方式
9、逻辑题 关于运煤的
10、简化路径(算法提)
11、二叉树的右视图(算法题)
7.11
字节跳动秋招提前批 C++客户端 面经
1.进程和线程的区别,有了进程为什么还要有线程
2.进程的资源、线程的资源
3.多线程怎么同步,多线程竞争怎么解决
4.mysql有哪几种锁
5.一次完整的http请求过程
6.http和https区别,哪个更快
7.https加密过程
8.DNS域名解析过程,用到了什么协议(UDP),最后获得IP地址就能怎样呢(就可以识别在网络中的机器)
9.TCP和UDP区别以及各自使用场景,UDP不可靠的话那为什么咱们现在视频这么流畅,是依靠什么(应用层来保障)
算法:判断两个链表是否相交
二面
mysql事务的原则
哈希表怎么解决冲突
nosql非关系型数据库了解多少
mysql查询优化的方法
索引为什么查询更快
有哪些索引类型
算法:查找二叉树中两个节点的最近公共祖先
7.10字节跳动商业部Java后端一面凉面经
https://www.nowcoder.com/discuss/449769?type=post&order=hot&pos=&page=1&channel=2000&source_id=search_post
讲一下项目吧
项目中有什么亮点(讲了一下redis分布式锁)
ZooKeeper原理(当时用zookeeper是为了大致了解一下怎么用,底层根本不清楚)
Redis的I/O多路复用机制了解吗(不了解)
Redis的基本数据结构
Redis基本数据结构中HashMap底层实现是什么
如果让你来实现一个HashMap你会怎么实现
HashMap什么情况下扩容
HashMap插入和查找的时间复杂度
项目中的RabbitMQ是怎么用的(我快速的讲了一遍,结果面试官说他没听清。。。。)
简单讲一下ConcurrentHashMap的底层原理吧
ConcurrentHashMap除了用到了CAS,有没有用到synchronized
如果让你自己实现一个简单的线程池该怎么做
问了一下网络编程相关的知识(我说网络编程相关的不太懂)
如果让你构建一个客户端-服务器通信的话,该调用哪些API(不是刚说了网络编程的不太懂吗。。。)
TCP头部什么结构(我记得IP结构记得HTTP结构就是不记得TCP的结构)
端口号在哪里
MySQL索引,B树、B+树,为什么B+树适合范围查询,B树又有什么优点(讲了一下区别,以及在MySQL和MongoDB中两个是怎么作为索引的)
MySQL如何进行调优,有哪些常见的优化手段
HDFS基本原理讲一下(忘得差不多了)
编程题:字符串转换为整数,leetcode第67题(做的过程中慌得一批,有一个地方把&&写成了||半天没找到)
7.10字节跳动抖音客户端c++123面面经链接:https://www.nowcoder.com/discuss/449514?type=post&order=hot&pos=&page=1&channel=2000&source_id=search_post
自我介绍
讲个印象深刻的项目
数组和链表优缺点
栈和队列区别,应用场景
栈实现队列
哈希表原理
哪些函数可以用作哈希函数
tcp udp应用
进程线程
什么是锁,自旋锁互斥锁区别
手撕数组A去掉数组B存在的元素
为什么要用set
set的实现,查找速度
手撕旋转矩阵90度
时间,空间复杂度是多少?
swap函数的实现
7.10字节跳动 客户端开发秋招一面
1.讲一下操作系统的调度算法,他们之间的区别
2.讲一下进程和线程之间的区别,进程之间的通信方式,线程之间的通信方式
3.讲一下mysql的索引结构,为什么实用B+树会查询更快
4.讲一下TCP和UDP的区别,应用场景,如何使UDP达到和TCP相同的效果
5.HTTP和TCP的区别
6.结构体中定义的变量,占用多少内存
typedef struct { char a; short b; int c; char d; char e[3]; } 一个字节对齐,占用多少内存 四个字节对齐,占用多少内存
7.实现一个带有push和pop操作的栈,让其能够在常数时间查询到最大元素
8.字符串反转,输入"a.bc.d"输出"d.bc.a"
字节跳动提前批 客户端 二面凉经 C++
一面感觉挺好的,面试官小哥哥超nice
进程与线程的区别
有哪几种线程间通信方式
进程地址空间分为哪几个部分
.text .data .bss 堆 栈 共享映射区这些块
两个线程访问一个局部变量,如何保证这个局部变量不会在访问还未结束时就被销毁
手写代码:
在给定整数数组中找到没有出现的最小正整数(要求时间复杂度O(n),空间复杂度O(1))
这个题在leetcode刷过,说了下思路,然后把代码写出来,几个测试样例都通过了。
二面凉经:
进程间通信方式,回答管道、信号、共享映射、socket
管道的适用场景(不太会,回答是用在父子进程)
堆和栈的访问效率哪一个高
栈上面存放了哪些内容,回答局部变量,还有寄存器
寄存器和内存的区别
类类型没有数据成员,定义该类型的变量占几个字节,回答是1个,面试官又问这1个字节的内容是什么,不会。
内存管理方式,回答段式管理和页式管理
线程池原理,这个完全不了解
四种类型强制转换
设计模式题,给出策略模式的一个应用场景
手写代码:
求给定字符串的最长无重复子字符串,这个说了思路,写出来代码,面试官不太满意,说有优化的空间,让我面试结束后再研究一下。
转岗后一面
进程与线程的区别
死锁的出现原因
OSI七层参考模型与各层代表协议
TCP三次握手过程,包括两次握手可能出现的问题
读写锁的实现原理
IPV6概念
http与https的区别
手写代码:
在给定字符串中删除字符b和相邻的a、c字符
输出二叉树的左视图能看到的节点
二面
进程和线程的区别
缺页中断,包括中断处理过程和页面置换算法
二叉搜索树与平衡二叉搜索树的区别,各自的特点和查找效率
线程共享和独享的资源
可否用过多线程,回答学习过线程池
场景题:
一千万个七位十进制数放在磁盘上,只有1MB的内存,如何对其排序?这个题把我问懵了,得计算每个元素如何在内存中存放,存放的空间大小,多路归并的路数,每次调入内存的元素多少。最后在面试官引导下勉强回答出来。
手写代码:
判断一颗二叉树是否为镜像二叉树
7.8字节跳动客户端日常实习通过面经
计算机网络:tcp/ip协议组,网络层次,常见的协议和用途,为什么是三次握手和四次挥手
操作系统:进程间如何通信,死锁的形成条件,预防方法和破解方法
知道哪些垃圾回收算法,jvm的内存模型等等
数据结构和手撕代码:一道链表反转;一道在两个有序数组里找中位数,这道属于hard,但是本身不难。
7.8字节跳动客户端二面面经
问的都是操作系统问题
页置换
页面调度算法
lru算法如何实现(懵逼)
cpu调度算法(没答完整)
死锁
如何避免死锁
如何处理死锁
银行家算法
代码题,如何判断一颗树是否是完全二叉树。(突然忘了什么是完全二叉树,还好面试小哥哥提醒了我)
7.6字节跳动提前批C++客户端两面凉经
一面:50分钟左右,都是基础问题,有些问题记不清了!!!
1.自我介绍
4.进程、线程的区别?
5.进程间通信方式?
6.线程间通信方式?
7.输入一个网址,整个过程都用到了哪些协议?
8.TCP、UDP区别?
9.TCP怎样进行流量控制?
算法题:输出二叉树的所有路径:https://leetcode-cn.com/problems/binary-tree-paths/
二面:1小时16分钟,想起来的就这些。。。
1.自我介绍;
2.问项目相关。
3.用过哪些设计模式?观察者模式、单例模式
4.能写一下观察者模式的关键内容吗?没写出来。。
5.那写一下单例模式?写了懒汉式,能写线程安全的吗?答:对多线程了解不多。。
6.说一下多态?
8.进程间的各种通信方式都有什么特点?
9.共享内存内部是怎样实现的?共享内存有什么优势?
10.HTTP与HTTPS的区别?
11.HTTPS加密传输过程?
12.私钥在传输过程中被截取怎么办?
13.说一下TCP传输时的慢开始?
算法题:
二叉树的层次遍历,看到题目内心窃喜,刚开始写,面试官说一面写过二叉树了,换个题目😪
Top-K问题:包含N个整数的数组,输出前K个较大的数。
面试官:先说思路
本菜鸡:最直观的就是先排序,然后遍历。
面试官:那排序的话,你准备怎么排?
本菜鸡:那得看输入数组的特性,如果大体有序,插排可能快些,若完全乱序,当然是快排效率最高。
面试官:那这个还能再优化吗?
本菜鸡:能不能利用归并?
面试官:归并排序时间复杂度是多少?
本菜鸡:nlogn
面试官:那快排呢?
本菜鸡:nlogn,最坏情况下为n^2
面试官:那这没有优化啊?
本菜鸡:那不知道怎么优化了😔
面试官:那你就写个快排,然后输出前K个较大的数吧。
本菜鸡:好的。
7.2【C++客户端】字节跳动提前批一、二、三面(三面已过)
一面,7月2日晚上7:30,50分钟左右。
3.多线程同步。
4.进程通信。
5.TCP拥塞控制。
算法题:二叉树最近公共祖先(进阶),比常规的二叉树查最近公共祖先,这个要求查询多次,每次查询不同的两个节点。
二面,7月3号中午11:30,60分钟左右。
6.五层网络模型各有些什么协议。
算法题:给一个只有数字的字符串,分成五个数每个数小于600,输出所有分法。
三面,7月7日上午10:30,40分钟左右。
6.手撕unique_ptr。
7.编程题,把类似html的文件解析成一颗树。
7.3字节Android客户端一面面经
对于我的话,他提到了以下问题
讲一下Java中的List;
数组和链表的区别;
多线程里的关键字,volatile和synchronized;
TCP/IP四层协议(浅谈而已);
讲几个进程调度算法(我只说到了FCFS和RR,惭愧😂);
编程题:用一个数组或链表实现先进先出队列
#内推##提前批##字节跳动##面经#