目录:
今天这篇用来记录一下这两三个月的面试历程,包括普通八股文、算法
有些是面试完几天后才记录的,只想起了个大概,详细的记不太清楚了
只是题目,答案的话直接网上搜索就行了
一面是算法面,主要有三道算法题,基本都是简单题型
(1)字符串查找
给定一个abdcdd字符串和一个abd字符串,在abdcdd字符串中找出abd字符串出现的第一个位置(从0开始),如果不存在,则返回-1.
例如:
输入:abdcdd="hello",abd="ll"
输出:2
(2)atoi函数
实现atoi函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
例如:
输入:+3838
输出:3838
输入:-99kdj98
输出:-99
输入:dkdkdkdk
输出:0
leetcode地址:https://leetcode-cn.com/problems/string-to-integer-atoi/
(3)判断字符串是否有效
给定一个只包括的'(',')','{','}','[',']'字符串,判断字符里是否有效。
例如:
输入:"()"
输出:true
输入:"(){}[]"
输出:true
输入:"(]"
输出:false
1、介绍下java gc
2、介绍下JUC,线程安全方面的
3、mysql事务相关、锁、索引、事务如何实现
4、redis集群模式、数据结构
5、kafka副本是怎么样的、kafka为什么快?
5、select、poll、epoll是怎么样的
6、TCP三次握手、四次挥手、为什么需要三次握手,四次挥手、滑动窗口
7、粘包是什么情况,如何解决?
8、介绍下项目:项目架构、多少人维护、做了多久、用户量、我在其中担任什么角色,做了什么功能
三面有两道算法题和八股文
算法题:
(1)去除字符串中的空格
(2)获取字符串的所有子序列
leetcode类似题型:https://leetcode-cn.com/problems/subsets/
这道题在面试中没做出来哈哈哈
八股文:
1、说一下用到的存储系统
2、说一下redis的key是怎么进行hash的?一致性hash算法?Hash的负载因子是多少
3、TCP三次握手中的backlog是怎么样的
4、kafka的源码有没有看过、redis源码有没看过(问到这里的时候基本已经可以肯定挂掉了)
5、linux如何查看磁盘读写性能等
算法题:
(1)单链表部分反转
(2)旋转数组中查找元素
八股文:
1、JVM内存结构,垃圾收集器,GC等
2、多路复用,redis使用了Reactor模式,它为什么快?
3、spring的依赖注入解决了什么问题?
4、说一下java锁机制?对象锁?公平锁?非公平锁?可重入锁?不可重入锁?自旋锁?
算法题:
(1)二叉树的最长路径
八股文:
1、kafka partition底层存储是怎么样的
2、kafka如何确保消息一次消费且只被消费一次
3、kafka如何确保生产者消息发送成功
4、kafka 的消费者在消费成功、失败该怎么处理
5、mysql的innodb底层存储是怎么样的
6、mysql跟hbase的存储结构有什么不一样
7、内存池如何设计
8、进程间通信,最快的方式是什么,内存在内核还是用户态操作
9、TCP/IP如何解决粘包问题
记录的是大概,详细的题目忘了
1、JVM
2、Kafka
(1)kafka如何确保消息的exactly onece semantic–EOS,从生产者、队列、消费者端分别回答
(2)副本之间如何同步
(3)kafka为什么这么快
(4)一台服务器上有太多partition会出现什么问题
3、spring cloud
4、mysql
编程题:多个线程打印一个列表
(1)项目
(2)spring cloud之间如何互相调用
(3)mysql
(4)遇到的难题(这种题最难答了)
编程题:删除相邻重复字符,例如 abccdee --> abcde
1、创建线程方式
2、线程池参数
3、线程池任务怎么执行
4、怎么停止线程池的某个任务
5、泛型是怎么样的
6、泛型有哪几种,运行期能获取泛型参数类型吗,?号怎么用
7、什么时候进行full gc
8、频繁full gc如何排查
9、内存溢出怎么排查
10、mysql的隔离级别、以及会导致什么问题
11、幻读如何解决
12、mysql中要手动加锁还是自动加锁,一条sql是怎么加锁的
13、怎么优化慢查询
14、mvcc是什么
15、mysql索引类型
16、mysql存储引擎以及区别
17、spring ioc、aop等信息,aop底层实现有什么
18、spring cloud全家桶
19、有没看过spring 全家桶源代码
20、spring eureka的流程
21、linux一堆命令,比如查看某个进程pid、只查看PID用什么、查看磁盘使用量、查看线程所用cpu:top -H
22、restful是什么
23、如何设计一个接口:图片和其它信息一起上传?然后扯一堆问题
24、短信接口如何实现,需要考虑什么问题
25、如何方式恶意刷接口行为?人机校验接口如何实现?
1、项目
2、springcloud
3、netty粘包拆包怎么解决,netty中channel有几种
详细的没记录,大概就是这几个
1、JVM
2、mysql
3、kafka
4、redis
5、spring cloud
6、算法题:合并两个有序链表
1、讨论项目
2、遇到的难点,是怎么解决的
1、tcp粘包是如何导致的?tcp是长连接吗?tcp和http的keepalive有什么区别
2、udp会有粘包吗
3、netty的粘包如何处理
4、io多路复用是怎么样的
5、select、poll、epoll是怎么样的
6、mysql索引是如何加快搜索的
7、慢sql如何进行优化
8、limit分页如何进行优化
9、spring transaction会失效吗?
10、数据库和缓存不一致如何处理?
11、性能优化操作时如何利用arthas进行操作的?
12、spring cloud有哪些组件
13、为什么会有Feign组件,跟Ribbon需要自构建http请求如何区分
14、微服务之间怎么进行调用,pod之间如何在网络层相互调用
15、spring循环依赖如何处理?构造注入的循环依赖处理?
16、spring 拦截器、过滤器
17、如何在生产中查看日志,除了elk或其它日志平台,大文本日志如何查看相应时间段的日志?
18、ES如何进行文档搜索、底层搜索流程是怎么样的
1、讨论项目
2、缓存系统该如何设计
3、kafka的副本之间是如何同步的
4、mysql的索引是怎么样的,为什么可以加快搜索
5、mysql底层存储是怎么样的,如何加载数据
6、数据库事务是如何是实现的
7、算法题:删除单链表倒数第n个节点
1、linux进程、线程是什么样的,协程是怎么样的
2、进程线程模型,1:n和1:1有什么区别
2、tcp如何确保消息顺序、消息不丢失
3、TCP发送端没接收到接收端返回的ack应该怎么处理
4、传输协议有了解过吗?像protobuf等,该怎么去设计消息体结构,要是文本类消息该如何设计消息体结构
3、https如何进行单方面认证,比如客户端认证服务端
4、线程之间如何进行通信
5、mysql的原子性时怎么样的,如何保证原子性
6、脏读是怎么造成的
7、编程题:余额表添加扣减操作,同时添加流水表,如何敲代码,代码演示
如何在代码层面不加锁的情况下进行操作?只能利用mysql自带的锁
8、算法题:奇偶链表排序
给定一个单链表,链表中所有奇数位置的结点值是单调递减的,所有偶数位置的结点值是单调递增的。请就地(也就是说空间复杂度要求为O(1))将此链表改为顺序排序。比如单链表:9->4->6->7->5->8->3,奇数位置结点值依次为 9、6、5、3逆序排列,偶数位置 4、7、8为顺序排列。
1、讨论项目
2、系统高可用如何保障?服务降级、限流有没有了解过
3、怎么从长链接生成短链接
4、算法题:从字符串中找出最长不重复子字符串长度
比如 abcdabcddd,那么最长不重复子串就是 abcd,也就是4
面试靠知识储备的同时,运气也很重要。
运气体现在面试官方面和算法题方面。
算法题方面看运气能不能遇到的就是曾经刷过的题
八股文方面主要是在记住的同时要理解,很多面试官会抓住一个点深入往下问的。
面试腾讯QQ音乐的时候,面试官给了我一个建议,我个人觉得很实用,算是一个面试加分点吧
就是回答问题的时候不要自顾自的说一大段,很多面试官可能没时间或者没耐心听,最好是先回答个大概,然后跟面试官交流,问下是否需要详细展开。
最后,祝想跳槽的同学都能去想去的厂做CRUD boy。