TODO 清单
面试资料大全
- 一面
http 状态码/header/请求方法, 哪些请求方法是幂等的
https 加密原理
python 协程原理/缺点
python GIL, 为什么有 GIL 还需要 threading
python gevent 协程调度原理/缺点
设计一个文本编辑器实现插入/删除/查询
头条文章向用户推送避免重复推送的问题
工作中遇到的印象深刻的问题
两个单链表求和
两种存储引擎
http 的返回码
mysql 索引
链表操作(在线写代码)
http 状态码
UDP / TCP 协议
链表操作 [手写代码]
乐观锁 / 悲观锁
三次握手
Socket
Hbase 底层原理
Map 底层原理
数据库分表 / 分库 / 集群
给定一个二叉树. 返回二叉树每层的最左的值。
手里有一副扑克牌。按照下列规则吧他堆放桌上。一. 拿出最上面的一张牌. 放桌上. 然后把接下来的一张牌放在扑克牌的最下面。循环. 直到没有手牌。现在已知桌上牌的顺序。求原手牌的顺序。
redis 内存不足. 如何解决
mysql 索引的使用和原理
epoll 和 poll,select 的区别
实现一个有顺序的 LinkedList. 实现 deleteAll(int val)方法删除所有值为 val 的节点. 和 save(int val)方法添加一个值为 val 的节点。
线程池的工作流程。线程的几种状态. 什么情况会进入阻塞
JDK 基础 集合 锁
Mysql 的索引结构 聚簇索引
限流。限流算法。令牌桶的不足
GC CMS. CMS 的参数
JVM 的一些排查工具 jstat, jstack ,jmap
工作中遇到的问题如何排查
一排盒子. 每个盒子上标了能走的最大步数. 从第一个盒子开始. 判断能否走到最后的盒子
栈 增加一个 max 方法;
自己设计 hash;
微博限定用户每次输入最多 140 个字符. 用户如果传字符串很长的链接. 怎么办
输入一串空格分开的整数. 相邻不会重复如:1 2 4 3 5. 只返回其中一个峰值就可以. 比如返回 4 或者 5。 峰值定义:大于相邻两个数字就是峰值;对于头尾两个数字. 分别大于相邻的一个数字即算峰值
二叉树镜像
两个线程. 一个只能存有数组 1. 2. 3 和另一个存有 a. b. c. 然后通过调度. 最终结果输出 1a2b3c
输入一个 int 数组. 返回一个数组. 其中奇数都在左边. 偶数都在右边 附加条件 不使用额外的空间
java 多线程知识点. 如 synchronized. reentrantLock 以及两者比较
java 线程池. submit 跟 execute 的区别
stack 实现一个 min 方法. O(1)的复杂度
数据库两种引擎比较
数据库 3 个字段的联合索引. 在用单字段时能否命中索引
数据库如何建索引. 和如何分库分表
找到一个文件里出现次数最多的的数字. 文件大小远大于内存容量
10G 文件 1G 内存.
打印重复数字
查找前 topK
给一个数组和一个整数. 输出数组中所有和为给定整数的元素下标
MySQL 两种存储引擎的差异;
where a>1 and b>1;where a = 1; where b = 2,如何为这种条件语句建立索引;
LRU 的实现
介绍一个项目中遇到的问题。
一个 100G 的文件. 内存只有 8G. 如何给文件排序. 文件内容都是按行存储的 URL
a. 产品设计过程中面对的挑战和难点;b. 周围同事对我的评价;c. 产品设计考虑的几个点
k 路归并排序
lru 原理要非常详细的数据结果和过程结构
给个数组. 只有重复的. 求所有和为 21 的下标:不用 n2 的暴力算法. 要考虑数字相同的下标. 先说思路没问 题才能共享屏幕写
根据二叉树前序遍历生成 avl 树
编程题:string 转 double
hashmap 实现方式
数据库事务. 隔离级别
out Of memory Error 跟 stack Over flow Error 的比较
数据库的隔离级别
java 的 array 跟 list 的比较. 底层原理上的
有 sql 的编程题. 是问每门课程都大于 80 分的学生名字
java 编程题. a. 反转一句英语的所有单词:hello world - > world hello
b. 6 7 8 9 0 1 2 3 4 5. 找一个数还有 tcp. 三次握手;ssl。
对称性加密跟非对称性加密的比较. 使用场景
数据库事务
java 的多线程
涉及面好广 还有密码学的. 加密算法 RSA
搜索引擎倒排原理及实现方式
Redis 高可用方案
主键与索引的联系和区别
索引的实现方式. 为什么会采用这种数据结构
Redis 缓存删除策略
编码实现 LRU 算法
统计大量访问日志(分几百 M 和 几百 G 的场景);得出访问次数最多的前 K 个人 (单台机器实现)
给你一个连续素数数组 让你找出增长比第 k 小的位置
代码题:有序数组 A = [1, 2, 2, 3, 3, 5, 5, 5]. b = 5. 在 A 中找出 b 的序号的上下界. 考察思路和代码熟练度
自我介绍. 项目经历(会结合你的项目经历即兴问一些相关联的问题. 以设计思路. 框架性的思考为主)
HTTPS 原理
Oracle MySQL 特性. 优劣势
Redis 等前沿技术栈的知识面
python 的装饰器
mysql 的 innodb 与 myisam 区别. 索引
10G 文件. 1G 内存. 找出最大的 K 个数. 找出重复数
简单的一道系统设计题:用 redis 做限
然后是 Mysql 各种基础知识
然后是 HTTP 状态码 502/504
然后是一道系统设计题:微信扫码登录
成都后台笔试:是输入[I love byte bytedance] Ilovebytebytedance 然后判断中括号里的单词能否组成括号外的语句中括号里的单词用空格符隔开. 括号外的语句不能由单词重叠组成如果输入这个[I love byte bytedance] Ilovebytedance. 预期结果返回 true
南京大数据后台一面:redis 相关的 zset 结构 redis 内存回收 多线程拒绝策略 数据库 B 树索引 treemap 原理
然后算法题一个是 给定一个数字只移动以为要求结果比原值大并且是所有方案中最小的值
还有个算法题是 16 进制加法
成都后台一面:. mybatis 的 Mapper 接口映射到 sql 文件的实现原
mysql 联合索引,实现,优点
一个算法题. 两数组 a,b. 把 a 数组中在 b 数组出现的数字. 按照它在 B 数组中出 现的顺序进行位置调整。
微博等热门评论. 在分页到很深的时候. 如何进行优化
成都后台一面
mysql 相关:
引擎 innodb 特性. 锁. 事务
kafka. rocketmq. 同步机制和事务机制
编程实现的是泛型链表的添加和删除. 主要是看敲代码的过程和怎样解释自己的代码吧
杭州后台;删除链表中重复的结点在一个排序的链表中. 存在重复的结点. 请删除该链表中重复的结点. 重复的结点不保留. 返回链表头指针。例如. 链表 1-> 2-> 3-> 3-> 4-4-> 5 处理后为 1->2->5 总结:比较注重 CS 修养. 底层源码实现
输入一个二叉树. 以及指定一个层次. 从右向左输出这一层的所有节点
设计一个 LRU. 尽可能的支持高并发
session 怎么用 cookie 实现的. session 和 cookie 的区别。
java 线程池是怎么工作的。
java bio nio 的区别
nio 是怎么实现的
CMS 的流程
CMS 的参数
线上的 GC 是怎么配置的?
redis 主从怎么实现的。
北京后台一面:介绍一下项目. 链表逆序. 设计一个王者的组队系统
北京: 限流 zset redis pipieline http 请求过程详解 mysql 索引 堆排序 求前 k 大个数
sql 什么时候不适合用索引. 索引太多会有啥问题. 同步 io 和异步 io 区别. coding 是多个数组合并. follow up 如果数组个数非常多但是每个里面的内容比较少
http 和 https 的区别. https 的实现
成都后台开发:第一个题是’反转二叉树’. 第二个题是 N 皇后问题(8 皇后问题的扩展)
单链表. 每 k 个进行一次翻转
设计一个限流工具. 每 5s 允许一个请求. 多的请求丢弃
设计一个限流工具. 在第 1. 6. 11. 16 秒允许一个请求. 多的丢弃
设计一个限流工具. 在第 1. 6. 11. 16 秒允许一个请求. 多的排队等待
介绍一个最熟悉的项目. 里面有什么亮点
简单工厂. 抽象工厂. 方法工厂的区别
java 线程池的有哪些参数. 以及意义
成都后台一面
concurrentMap 实现高并发的原理
java nio 和 bio 的区别
redis 的常用数据结构. 持久化方式. 写入时 rdb 机制
https 机制. http 服务端推送
写一个 lru cache. get set delete 都在 o(1)
深圳后端
python 的 gil 锁
消息队列如何实现高吞吐量
http 状态码
数据库外键的优缺点
算法给定 ab 两个数. a 可以+2019. ×5. ×17. 问最少经过多少步可以将 a 变换到 b(2019. 5. 17 是今天的日期. 完全是现场临时随便编了个题)
介绍下项⽬目
项⽬目中的难点是什什么. 怎么解决的
算法:数组中第 K ⼤大的数. 分析时间复杂度
volatile 的作⽤用
怎么保证原⼦子性
线程安全的单例例模式
ThreadLocal 的作⽤用. 应⽤用场景是什什么
HashMap 和 TreeMap 的区别. 以及各⾃自的优势
Mysql 的索引是怎么实现的. 为什什么这么实现. 优势在哪
北京后台 1 面:
502 504
cookie. session
mysql 优化
mysql MyISAM 与 innodb 的区别
redis 分布式锁
缓存一致性
mysql 索引存储
jvm 垃圾回收算法
深圳后台一面:
go string 的数据结构
goroutine 的调度
数组中第 k 大的数
武汉后台一面:1. ORACLE 和 mysql 的区别
工作中 Spring Aop 的案例
activemq 和 rabbitmq 的区别
数据库中的索引和事务
网络知识:TCP 的三次握手. 四次挥手。
分布式锁。
数据库的分布式事务。
算法题:遍历树. 求从根节点到叶子节点和为某值的路径。
105 北京后台一面
一排相邻的糖果屋. 不能从相邻糖果屋买糖. 请问最大能买多少颗糖?输入[1,2,3,1] 输出 4
上海后台一面:rabbitmq 的代替方式
聚集索引和飞聚集索引区别
哪些情况会用到索引
怎么排查慢查询
事务隔离级别
Tcp 三次握手四次挥手 Udp
select poll epoll
算法:按层输出树的结点
Http 各状态码
Session 和 cookie
杭州后台一面二面:
ctrl c 过程;
去除重复列表;
单链表求和;
二面:
- 多个人玩贪吃蛇设计
- 项目开发性设计. 自己设计. 自己定规则
- B B+ 跳表区别 时间复杂度
- Https 与 http 区别. tls 的加密流程
- 自增 ID 与 uuid 的优劣
- Redis 的事务以及实现方式
- 给定字符串的全排列
- 介绍经历. java 线程池基础知识. 自己实现一个线程池. 然后是二叉树的 bfs. 最小公共子串得长度. 最大不重复子串的长度
- dubbo 的容错机制有哪些. 负载均衡机制有哪些
- fail-fast
- 一个有序数组. 求一个数出现的次数
- 数据库索引:表有 3 列 a,b,c. 需支持查询(a,b)(b) (b,c). 索引如何建
- 反转二叉树
- 数据库表(id, name, parentId)如何组装成树?
- 主键索引和非主键索引的区别
- 数据库事务的隔离级别
- redis 和 memcached
- 数据库查询优化
- 编程题. 贪心算法
- 不同字符最大子串根据给定的输入字符串. 返回包含有最多 k 个不同字符的子字符串的长度及子字符串在输入字符串的起始下标如果有多个符合条件的子字符串. 则返回第一个子字符串的下标输入描述输入为一个待校验的字符串输出描述两个数字. 分表表示子字符串的长度以及子字符串首字符在输入字符串的下标
武汉后台:
- 介绍下项⽬目. ⽐比较详细(包括线程数. 负载. 机器器压⼒力力等)
- 设计微博评论的存储系统. 要求⽀支持分⻚页
- Redis 的 hash 和 string 的区别以及各⾃自的优势和使⽤用场景
- 算法:给出⼀一个 xml 格式的字符串串. 校验这个 xml 是否是合法
成都后台:
- 手上有一堆扑克牌. 牌面顺序是 1234(从上到下). 规则是. 取手中最上面的牌放入桌上牌堆的最上面如果手中还有牌. 则将手中最上面的牌放入手中牌堆的最下面重复 1. 2 步骤这时桌上的牌堆顺序是 4231(从上到下) 题目:已知桌上牌堆的顺序. 求原来手中牌堆的顺序
- 有一个数组 -1 3 2 4 5 -6 7 -9,将该数组的负数和正数分离开多余的数放入数组的尾部 比如 3 -1 2 -6 4 -9 5 7
- 上海后台:数字金额转为中文说法. 例如 1001. 25 转为壹仟零壹元两毛五分
- 北京后台一二面:1. Redis 的分布式锁. 单节点和集群的优缺
- 自己项目里的 mysql 规模 3. 10g 文件. 1g 内存.
- 求 top k 和 重复数字
- 两个单向链表按照十进制求和. 不能使用已经有的数据结构和注意链表方向. 比如 1-> 3-> 5-> 9. 5-> 4. 等于 1-> 4-> 1-> 3
深圳后台:
- 一千个棋子. 甲先取乙后取. 每次最多取七个最少取一个. 问是否有一个方案让甲一定赢
- 3×7 的格子. 从左上角到右下角. 只能往右或者往下. 有多少种走法
- 一个不均匀硬币. 如何抛出均匀概率,然后有一个生成 0 到 13 随机数的算法. 如何用它均匀生成 0 到 9 随机数
- 两千万高考生成绩如何排序
- 用链表表示的大数求和
上海后台
- MySQL 中的事务隔离级别
- 协程的原理和实现
- gevent 中的协程的实现
- 反转链表
- 距离矩阵. 从左上开始. 只能往右或往下. 求从左上到右下的最短距离。
三面 :
- leetcode 670. 然后系统设计题. 设计群消息已读功能.
- 三面应该是 1 道算法 1 道系统设计
- 假设是一个抽奖的游戏. 不同的人是有不同的概率倍数. 是一个整数. 例如 1. 3. 5. . . 输入 100 万人. 要求抽奖抽出来 2 万个人;并且假设每个人都有一个唯一 id
- 写一个函数做下抽奖. 输入和输出的数据结构自己设计
- 然后就是项目上的一些东西 redis 高可用怎么实现. redis 过期怎么实现. Mysql 索引的注意事项
- code review
- 数据库索引+前缀匹配
- 缓存设计
- 并发控制(乐观锁. 悲观锁)
- xss && csfr
- 杭州后台三面:推送的频率控制. 抖音评论列表的设计及缓存实现. MySQL 索引怎么建. http 头. http header
- sizeof 运算符计算要考虑哪些因素
函数定义 int a[100000]可能出现什么问题
一百万个用户抽奖. 奖品只有 1000 个. 每人最多中奖一次. 每个用户中奖倍率不一样. 给出代码实现。 - 问了 redis 数据结构和实现
- 问 hashmap
- 浅拷贝深拷贝实现
- 把一面的算法题再做一次
- 项目聊很多(使用的中间件实现原理)
- 带权重抽奖代码实现
- 类加载过程
- 热加载. 热替换
- jvm 参数:-server -client
- JIT 即时编译原理
- 排查线上问题经历. 思路
- 聊部门情况