好工作,面试题,准备一个个攻克

简介
分享一下个人秋招面试题目和面试心得(后端)

面试题目
算法
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/
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值