简介
分享一下个人秋招面试题目和面试心得(后端)
面试题目
算法
1.接雨水(被问很多次)
2.链表反转
3.链表快排和归并排序
4.堆排序
5.数据流中位数
6.给定n个数,找出和为k的最少数字个数,例如,给定数组是1,2,3,k=4,那么,需要1,3这两个数(应该是dp)
7.字符串反转,给定i work it,输出it work i
8.给一个数,例如1234,把这个数的所有数字排列,下一个比他大的数是1243,输出1243(被问很多次)
9.给一个数字,例如100,200,100,300,输出每个数下个比他大的数,复杂度要求o(n),例如,输出200,300,300,0(没有输出0)(栈))
10.给定{开始时间,结束时间}的一个数组,每个员工在这时间内工作,求最多多少人同时工作(按时间排序,遇见开始就加1,遇见结束减1)
11.矩阵连乘问题,求A1A2A3*..An的最小花费(算法导论经典题)
12.链表中间节点和扩展(找三分点之一位置,到数第n个节点)
13.空间n个点(xi,yi),x,y<1e8,求一个矩形内有多少个点,多次查询,(个人想法:将x坐标划分成sqrt(max(x))份,设sqrt(max(x))这个值为sqx,即0-sqx,sqx+1-2*sqx,以此类推,然后将每个区间按y值排序,设矩形左下坐标(x1,y1),右上坐标(x2,y2),找到x1和x2对应的区间,对应x1和x2这两个边界区间单独考虑,其余区间堆y1,y2分别使用二分)(RMQ问题)
14.((xy)z),将括号内字符反转,结果是zxy(栈))
15.求一个数平方根(牛顿法或者二分)
操作系统
1.局部性原理(空间和时间上的)
2.线程进程协程
3.共享内存实现(shget,shat,shctl等)
4.管层实现
5.fork
6.死锁,手写死锁
7.银行家算法
8.信号量应用,手写信号量实现
9.内核态线程和用户态
10.线程通信
11.进程通信
机算机网络
1.https通信过程和加密算法
2.http1.0,http1.1,http2.0,http3.0
3.7层结构(应用层等等)
4.tcp三次握手四次挥手(被问无数次)
5.time_wait状态,close_wait状态
6.time_wait状态太多原因和怎么处理
7.close_wait状态太多原因
8.syn连接太多怎么办
9.tcp问什么3次握手(不是2次或者4次)和4次挥手
10.tcp和udp区别
11.get post区别
12.怎么设计稳定的udp(我是按tcp那一套来答得)
13.tcp nat穿孔
14.ping过程以及ping使用什么协议
15.tcp滑动窗口
16.tcp怎么保证稳定
17.tcp nagle粘包问题
18.tcp拥塞控制,慢开始和快重传
19.ARP协议
20.DDOS攻击
21.cookie欺骗
C++问题
1.volatile关键字
2.智能指针原理及实现
3.悬垂指针
4.异常相关(c++11 noexcept和之前throw的区别,为什么用noexcept)
5.c++11新特性有哪些
6.map实现(没看过源码,就没继续问了)
JVM问题
1.gc算法
2.CMS和G1区别
3.java和c++区别,为什么java是解释性语言,c++编译性语言
4.新生代哪些情况进入老年代
5.调用system.gc()一定进行full gc吗
6.java内存区域
7.java内存模型和happen before原则
8.可达性分析法和引用计数,循环引用怎么解决
9.对象初始化过程
java多线程
1.volatile关键字原理
2.synchronized关键字原理
3.volatile关键字和synchronized区别
4.多线程原理,增长策略和饱和策略
5.消费者生产者代码
6.多线程种类
7.fork-join简介
8.三个线程同步代码
java基础
1.lambda表达式优点
2.comparator和comparatable区别
3.string为什么是final
4.静态内部类和非静态内部类,匿名内部类
5.final用途
6.linkedlist和arraylist
7.实现简单的arraylist
8.范型T和通配符?区别
9.concurrenthashmap原理
10.hashmap原理
11.hashmap多线程出现哪些问题
12.equal和==区别
Mysql数据库
1.优化问题,例如使用exist不使用in
2.count()和count(1)区别,count()计算null,count(1)不考虑
3.innodb和memory区别
3.数据库实现数据结构(B+树)
4.B+树优点,为什么不使用B树,平衡二叉树,红黑树
5.B+树B是什么(Balance)
6.索引有哪些
7.怎么建立索引
8.索引有哪些优点
9.左前缀问题,给一个语句问是否使用索引,哪些走索引
10.主从复制读写分离原理
11.分库分表
12.怎么设计一个数据库,类似mysql,考虑哪些方面
13.数据库特性(ACID)
14.数据库事务种类
15.间隙锁,MVCC,next-key锁
16.数据库封锁协议
17.limit优化问题(例如,select * from table1 limit 10000,100;
18.给定学生成绩表,找出前三名成绩
Redis数据库
1.redis单线程原因
2.redis数据结构
3.zset实现原理
4.缓存击穿,缓存穿透,缓存雪崩
5.主从复制读写分离
6.哨兵模式
7.redis和mysql之间缓存一致性
个人总结
从6月份开始准备,操作系统看<<计算机操作系统>>第四版,<<计算机网络>>第7版谢希仁,<<深入理解JVM虚拟机>>,<<Mysql高性能>>第5和6章,***刷面经,基本没项目(一个android的,没人问,顶多介绍一下,还被吐槽...),分布式、高并发、中间件不了解,c++只会基本语法(C++pimer看了两遍),java基础,android基础还行,不过秋招过的都是C++开发,楼主拿到字节ailab,腾讯地图,美团的offer,除了京东一面挂(不清楚为什么...),都走到hr面,8月份拿到字节和腾讯意向书就没怎么投了,个人觉得基础和算法很重要,项目有更好(可以说20分钟,少问点基础),希望大家都有个满意的offer.
链接:https://leetcode-cn.com/circle/article/OZEuMd/