字节跳动面试题汇总
手写算法题汇总
5个人去一个海岛寻宝,最后一共找到了100枚金币。他们约定了一个分配方案。
给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。
一个环有10个节点,编号0-9。从0点出发,走N步又能回到0点,共有多少种走法? 一个乱序数组,求第K大的数。排序方式使用字典序。
1,给定数组,每个元素代表一个木头的长度,木头可以任意截断, 从这堆木头中截出至少k个相同长度为m的木块,已知k,求max(m)
2, 数组找右边第一个比它大的数 没有输出-1
3, rand5 [0,1,2,3,4] 实现 rand7[0,1,2,3,4,5,6]
算法:大数(字符串)相加 算法:统计n 转换成二进制数,其中1 的个数 算法:统计【0,n】所有的数转换成二进制数的1个总个数
算法1:输出一个矩阵离原点从近到远的坐标。(距离:|x|+|y|)
算法3:一个无序数组除了一个数,剩下都出现偶数次,且都相邻出现,比如11233444400 ,找到单独出现的数字
算法题:最长上升子序列长度。
写题:已知二叉树的先序遍历序列,输出它的中序遍历序列。比如先序:ABC##D#E###,输出中序CBDEA。#表示空节点,中序输出不需要#。
写个题,给定一个数组 [1,2,3] 和一个值 x,数字可以重复选取,输出所有和等于 x 的结果。 算法: 最长无重复子串 不用dp 空间常数时间
算法题: String偏移,左移k个单位 算法题:实现一个减法器 12345.789 - 3333675.32455 算法题:给一个二维数组 找出其中最长上升序列 [[1 5 8], [2 6 7], [4 1 3] ] 最长 1 2 6 7 8
算法题:二叉树的最低公共祖先 算法题:二叉树的Z字形遍历。 算法题:迭代二叉树的深度 算法题:二叉搜索树的后序遍历序列 算法题:根据中序与先序数组,求后序遍历的数组 算法题:二叉树多个节点的最低公共祖先 一棵二叉树,求最大通路长度。(即最大左右子树高度之和)
算法题:链表倒数第k个结点 算法题:K 个一组翻转链表 算法题:删除链表倒数第k个元素 算法题:0~9的环,从0出发,N步后能否走回0。
算法题:给你一串正整数,要求将其中两个进行一次swap,得到一个最大的正整数。 例如:326587变成826537。(单线栈或额外储存最后出现的坐标) 算法题:随机生成100个100~200位的大数,然后进行求和。
算法题:0~n-1中缺失的数字(两种方法) 算法题:1,股票,你们懂得 算法题:2,股票,重复购买 算法题:3,股票,有交易费用 算法题:走迷宫,找出一共路径即可 算法题:给定一共链表 1->10 -> 3->8 ->5 ->6 ->7,重新排序位一个升序链表。
算法题:31.下一个排列 算法题:全排列和全排列II 算法:一个无序数组,num[0]<num[1],num[n-2]>num[n-1],找到一个数,使得比左右相邻的两个数都大(用二分判断波峰)
磁盘上有10G大小的文件,存储int型的数字,数据是无序的。给你1M的内存空间,把磁盘上的数据排成有序的
说了使用二叉排序树...
面试官提示:使用传统的排序算法。快排,归并这些思路
写SQL:1。反正写分组查询结合条件
写SQL:2。在上题基础上加个子查询
写SQL:表student_score 字段:name, course, score 求 每个人考的最好的一门
一、给定一个数组代表股票每天的价格,请问只能买卖一次的情况下,最大化利润是多少? 二、那在日期不重叠的情况下,可以买卖多次,最大化利润是多少呢?股票买卖问题,leetcode原题 三、有两个数组,任意长度。 有两个线程分别读取数组a和数组b,线程1循环打印数组a中的数字,线程2循环打印数组b中的数,要求交叉,要求第一个数组先输出。
int a[n] = {1,2,3,4}
int b[m] = {'a', 'b', 'c'}
以上述a、b数组为例,最终打印的结果类似于下面:1a2b3c4a1b2c3a4b1c...
口述算法汇总
口述LRU算法, LRU不适合的场景
口述最大栈 类似剑指offer里的最小栈
口述 最小生成树算法
口述 两数之和(可能不存在两数和为target)
智力题
智力题:甲乙最后三次抛硬币,正反反甲赢,反反正乙赢,俩人胜出概率谁大?
智力题:一个圆内随机三个点刚好在一个半圆的概率。算错了,我想的简单了,后来网上查了一下发现是一个挺复杂的问题。
还有一个思维题 一个岛上 居民只带红帽子或者白帽子,他们不能交流, 红帽子数大于等于1,如果他们能知道自己的帽子什么颜色则可以离岛,问最后是什么情况,如果能全部离岛问需要多少天。
场景题
场景题:
- 给你300G的大文件,前部分是时间戳,后部分是日志内容,如果我想搜寻到某段时间的日志内容,你会怎么处理?(模拟B+树或OS中的多级页表,或者模拟redis中的跳跃表)
- 秒杀系统设计,给你一个秒杀任务,如何保证他的可靠性和防止超卖?说说要用到的技术就行。
- 你redis如何保证缓存一致性?
- 它是来一个请求就下单吗?
- 如果两个用户在两个不同的机器上登录进行秒杀,那该用户能同时下单同一件商品两次吗?
- 微信朋友圈数据库和高可用设计
技术点汇总
1、java基础
- 进程和线程的区别,使用线程真的能节省时间?
- 谈一下线程池用的参数?线程池工作流程?四种预定义的线程池区别。 各自workqueue size是多大?
- JAVA如何保持线程同步?常用的锁有什么?java锁升级是怎么样的?
- hashmap同步问题,扩容机制,怎么扩容的过程?哈希冲突哪有哪些解决?
- concurrentHashmap的工作原理,数据结构?
- 泛型,jvm怎么对泛型进行支持?
- Integer 和 int 的区别,平时编程中什么时候使用 Integer,什么时候使用 int?new Integer(1); 会不会从缓存当中取
- List 中为什么只能使用 Integer,不能使用 int?
- 介绍下NIO,NIO中Channel的作用
- 什么是悲观锁和乐观锁,区别是什么?原理是什么?
- 创建线程有哪些方式?线程有哪些状态?
- finalize方法
- 说说抽象类和接口的区别。
- synchonized和lock的区别?synchonized优化
- 为什么线程多的时候要使用锁而不是CAS?
- 谈一下异常,erorr和exception的区别,讲一下受检异常和非受检异常,说一下RuntimeException都有哪些,非受检异常有哪些?如何处理异常
- 什么是阻塞和非阻塞,什么是同步,异步?
- 什么是反射?反射的用途?为什么java需要反射,c++不需要。
- 有哪些方式可以创建一个对象?
- 多线程和协程的优缺点?
java框架(spring,netty)
- spring的核心模块有哪些?IOC和AOP的原理?
- spring的事务传播是怎么样的,哪些方式?
- spring是如何解决循环依赖的?
- Netty 的零拷贝怎么实现的?
- 讲一下Dubbo的服务降级源码
- hystrix的工作流程?
- hystrix和sentinel的区别?
jvm原理
- int i = 1; 这样的基本类型可能会存在于jvm的哪些区域?
- jvm 如何判断对象可以被回收?
- jvm 如何判断对象已经死亡,两种方法的判断流程是怎样的,哪个效率高?
- GCRoots 的对象有哪些?本地方法栈中的对象为什么可以作为GCRoots,怎么连接到 Java 对象的?
- java内存分为哪些区域,每个区域的具体作用?
- 说说JVM的GC算法,常见的垃圾回收器用的是什么算法。
- 说说CMS回收器。
- 类加载机制了解吗?说说双亲委任加载机制。最顶层的加载器是什么?
- 说说Full GC和Minor GC的回收内容和区别。
- 说一下方法表都存什么?说一下每个类都有一张方法表吗?
- 说一下栈都有什么?说一下局部变量表都有什么?
- 说一下栈溢出,堆溢出?方法区会溢出不?类元数据哪些会溢出?
- Java内存分配的流程?创建一个大对象的流程。为什么大对象直接进入老年代?
- happens-befor原则
- 谈谈多态,多态的底层原理
- CAS的底层原理,synchonized的底层原理
- volatile的原理?
2、linux原理和服务器
- 水平触发边沿触发的区别?在边沿触发下,一个socket有500的数据,已读取200然后不再处理,是不是剩下的300就永远无法读取?
- free -h,buffers 和cached有什么不同
- 后台进程有什么特点,如果要你设计一个进程是后台进程,你会考虑什么
- 僵尸进程是什么,如果产生一个僵尸进程,如何查找僵尸进程
- 孤儿进程是什么?
- 一个进程有20个线程,在某个线程中调用fork,新的进程会有20个线程吗?
- 用过哪些Linux命令?
- 如何查看Linux系统状态 ,如何查看线程,如何查看服务器负载,top的参数
- 知道/proc文件夹吗
- 虚拟内存,为什么要用虚拟内存,解决了什么问题;
- 进程间通信有哪些方式 ?重点问了消息队列和共享内存以及管道,提了一下信号量,内存共享的实现原理?
- Linux命令,指定两列,提取重复内容
- 页面置换算法有哪些?进程调度都有哪些算法?
- linuxI/O过程,内核、用户态
- 进程和线程的区别?
- nginx是正向还是反向代理?有什么区别?nginx多站点如何实现负载均衡?
3、网络
-
tcp三次握手,四次挥手的过程?以及为什么要这么做,TCP三次握手,哪个握手容易遭受到攻击
-
http是基于tcp还是udp?与https有什么区别? https加密方式是对称的吗?
-
https的加密流程?
- HTTPS的连接过程,中间人是什么?CA认证过程?
-
http的报文结构?
-
TCP第几层,OSI多少层
-
设计http协议,A端发送 AAAA,至少让B端知道AAAA已发送完成。
-
socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。这次通信一定失败吗?如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达?
-
tcp/ip 流量控制和拥塞控制,滑动窗口机制,Nagle算法
-
tcp udp区别,基于流和基于报文的区别,会引发什么问题;为什么会有快重传和快恢复,怎么做的;基于udp的协议有什么,是否了解过OICQ协议(表示没了解);udp怎么可以保证数据安全顺序到达。
-
301/302有什么区别?应用上有什么异同。
-
50X相关错误码的内涵是什么?
-
close wait和time wait是什么?如何排查?有什么意义?
-
TIME_WAIT状态什么时候出现?只在客户端出现?
-
http req和resp的中数据有哪些
-
什么是连接的半打开,半关闭状态
-
域名是如何被解析为ip地址的
-
dns缓存是存放在浏览器还是系统
-
浏览器对网页有缓存吗?缓存是如何存放的?
-
Cookie和session的联系与区别,cookie、session、分布式session
-
如何保证TCP可靠传输
-
什么是SSO?什么是JWT ? SSO、JWT和Redis登陆的过程
4、mysql数据库
- mysql为什么要用b+树,不用平衡二叉树做索引结构?B树和B+树有什么区别?
- 创建数据库索引应该怎么考虑?
- 使用int 做primary key和使用string 有什么优劣?
- 数据库分表的方法?
- 表结构,订单纪录如下,写一个语句,求卖的最好的 top 10 product_id。
- 如何预估一个mysql语句的性能?
- mysql 的主键索引和非主键索引有什么区别?什么是索引覆盖?
- 如果一条SQL语句执行的很慢,怎么优化?
- mysql为什么没有使用hash索引?
- 索引的匹配原则知道吗?
- MySQL事务隔离级别?
- Mysql的查询执行流程?更新执行流程?
- mysql有哪些存储引擎?什么区别?
- 数据库的表结构设计遵循哪些规则?
5、redis缓存
- redis单线程为什么性能高?
- Redis 为什么可以保证线程安全?
- Redis的七大数据类型和底层数据结构?
- 假如一个业务依赖单点redis,此redis故障将导致业务不可用,如何改进
- redis sharding有哪些做法
- 当大量数据要求用redis保存,单机单点难以满足需要,设计(换寻找)一个负载均衡的方案
- 当redis 采用hash做sharding,现在有8个节点,负载方案是 pos = hash(key) % 8,然后保存在pos节点上。这样做有什么好处坏处?当8个节点要扩充到10个节点,应该怎么办?有什么更方便扩充的方案吗?(一致性hash, presharding)
- 如何保证redis和数据库数据的一致性。比如用户名既保存在数据库,又保存在redis做缓存。有如下操作 update_db(username); update_redis(username)。但是执行update_db后故障,update_redis没有执行。有什么简单办法解决这个问题。
- Redis的Token有没有存在安全问题?如何解决?
消息队列
- RabbitMQ用途、结构
- RabbitMQ可靠性传输
- RocketMQ的事务最终一致性,RocketMQ事务模型
- 消息队列的可靠性如何保证,如何保证消息不重不漏
分布式和微服务
- Dubbo的原理
- Dubbo的负载均衡
- Dubbo的SPI源码
- 限流都有哪些算法,给我讲一下令牌桶
- cap解释下,p是什么?Base理论是什么?哪些框架cap用了哪些?
- zab协议选举过程?如果选举的时候zxid都相同呢
- 什么是分布式事务?分布式事务的解决方案?
- 分布式锁如何实现?RedLock算法
架构和设计模式
- rpc框架如何实现?
- 服务提供方有节点挂了怎么办?
- 服务调用方怎么知道服务不可用了?
- 怎么实现的类似本地调用?
- 你的rpc可以支持多语言吗?
- 微服务,A服务请求B服务B1接口,B1接口又请求A服务A2接口。会不会有问题?
- 什么是脑裂问题?脑裂问题如何解决?
- 谈一谈单例设计模式,你还知道哪些设计模式?
- 流量总入口为api_gateway,api_gateway挂了会导致全部挂挂,用什么机制增大可用性?
- 分布式事务在业务中如何处理?
- 延时队列如何设计?
非技术问题
- 为什么离职?根本原因是什么?
- 聊下你的职业规划?
- 你有哪些爱好?
- 最近在看什么书?
- 最近看的电影是什么?
- 你觉得你的优点和缺点是什么?
- 有其他Offer吗?
- 你平常怎么学习新技术?