互联网大厂高频面试题基本总结回顾(含笔试高频算法整理)

目录

一、基本面试流程回顾

二、基本面试题总结回顾

(一)Java高频面试题整理

(二)JVM相关面试问题整理

(三)MySQL相关面试问题整理

(四)Redis相关面试问题整理

(五)Spring相关面试问题整理

(五)HTTP相关面试问题整理

           (六) 设计模式相关面试问题整理

(七)消息中间件相关面试问题整理

(八)业务系统及其他相关面试问题整理


干货分享,感谢您的阅读!

备注:引用请标注出处,同时存在的问题请在相关博客留言,感谢!

一、基本面试流程回顾

总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。

  • 自我介绍+项目介绍+项目细节/难点提问-------这个主要看个人的经历了,每个人都不一样
  • 基础知识点考核---------还是可以去增强自己的,也是这次的主要的一些总结思路
  • 算法题-----------一般都是LeetCode高频题或者剑指offer高频题,这个得在找工作之前的好好的练习。

二、基本高频算法题展示

基本高频算法考题总结如下,如有错误请告知,谢谢:

归属内容 对应总结链接 笔试定义 代表题目展示

数学思维相关考题

数学思维高频考题

Letcode高频考题 众数、快乐数、丑数、回文数、平方根、超级次方、二进制中1的个数等
字符串相关考题

字符串高频考题

Letcode高频考题 最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等
数组相关考题 数组高频考题 Letcode高频考题

找到数组 A 元素组成的小于 n的最大整数、两数之和、三数之和、搜索旋转排序数组、只出现一次的数字、最大子序列、最长连续递增序列、最长公共前缀等

散列相关考题 散列高频考题 Letcode高频考题

重复字符的最长子串、字母异位词分组、LRU缓存机制、重复元素、同构字符串等

栈相关考题 栈高频考题 Letcode高频考题

有效的括号、最小栈、用栈实现队列、用队列实现栈、逆波兰表达式求值、用数组实现一个栈、基本数学运算表达式求值等

队列相关考题 队列高频考题 Letcode高频考题

用队列实现栈、使用栈实现队列、设计循环队列、滑动窗口最大值、队列的最大值、用数组实现一个队列等

链表相关考题 链表高频考题 Letcode高频考题 反转链表、链表中环的检测、链表中环的入口点、删除链表中倒数第K个节点、两个链表的第一个公共节点、链表的中间节点、合并两个有序链表、删除链表中的重复元素等
树相关考题 树高频考题 Letcode高频考题

二叉树的最大深度、对称二叉树、二叉树的最近公共祖先、二叉树的直径、二叉树的层平均值、二叉树的镜像、二叉树的最大宽度、平衡二叉树等

排序相关考题 排序算法高频考题 Letcode高频考题

冒泡排序、鸡尾酒排序、插入排序、选择排序、快速排序、归并排序、堆排序、Top K 问题分析、使用堆排序思想实现优先级队列、计数排序、桶排序、基数排序等

剑指offer考题 剑指offer所有高频考题 剑指offer考题汇总分析 剑指offer全部高频题罗列
动态规划考题 动态规划高频考题 Letcode高频考题 最大子序和、最长上升子序列、最长公共子序列、最大子数组乘积、编辑距离、单词拆分、爬楼梯、股票买卖问题、最佳买卖股票时机含冷冻期等
图论考题 图论高频考题(国内一般不考) 进阶分析考题 岛屿数量、网络延迟时间、单源最短路径、负权最短路径问题、具有最小生成树的连通图的最小代价、找到最终的安全状态等
大厂新考题 聚焦新版综合编程能力面试考查汇总 大厂新考 重点考查综合能力和理解能力等

三、基本面试题总结回顾

(一)Java高频面试题整理

相关答案参考:https://blog.csdn.net/xiaofeng10330111/article/details/53034130备注:针对基本问题做一些基本的总结,不是详细解答!1.HashMap和ConcurrentHashMap区别(必考)2. ConcurrentHashMap的数据结构(必考)3.高并发HashMap的环是如何产生的4.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?5.Hash1.7是基于数组...https://blog.csdn.net/xiaofeng10330111/article/details/53034130

考察方向分类:Java基础高频知识考点

1.基本类型和包装类区别

2.实例方法和静态方法有什么不一样?

3.Java指向的是引用还是地址?怎么理解?(高频考点)

4.Object类内的方法(高频考点)

5.hashCode方法的作用?

6.Java中一个字符占多少个字节,扩展再问int、 long、double占多少字节?

7.Boolean占几个字节?

8.Exception和Error

9.==和equals的区别?

10.String str="hello world"和String str=new String("hello world")的区别?(高频考点)

11.StringBuffer和StringBuilder的区别是什么?性能对比?如何鉴定线程安全?(高频考点)

12.StringBuffer 和 StringBuilder 底层怎么实现的?(高频考点)

13.switch支持哪些数据类型?支持long么?(高频考点)

14.创建一个类的实例都有哪些办法?(高频考点)

15.final、finnally、finalize的区别是什么?

16.Jdk1.8/Jdk1.7都分别新增了哪些特性?其他版本呢?(高频考点)

17.简单说下Lambda表达式,其解决了什么,相比java7的处理优化了什么?

18.有人说“Lambda能让Java程序慢30倍”,你怎么看?

19.SpI和API区别是什么?SpI底层实现是什么?

20.深克隆和浅克隆?(考频不多)

21.伪共享机制简述分析

22.假设引用了一个第三方的jar 有个类和我自己写的代码类一样,那么在类加载机制过程中是如何处理的?(高频考点)

23.Java提供了哪些IO方式? NIO如何实现多路复用?

24.谈谈接口和抽象类有什么区别?

考察方向分类:Java集合框架高频知识考点(高频考点集中地)

1.HashMap相关put操作,get操作等流程?(高频考点)

2.Hash为啥要扩容

3.HashMap如果我想要让自己的Object作为K应该怎么办?

4.Hashmap 线程不安全的原因(高频考点)

 5.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析?

6.HashSet和HashMap区别

7.Hash1.7是基于数组和链表实现的,为什么不用双链表?HashMap1.8中引入红黑树的原因是?为什么要用红黑树而不是平衡二叉树?(高频考点)

8.HashMap、HashTable、ConcurrentHashMap的原理与区别?

9.HashMap和ConcurrentHashMap区别(高频考点)

10. ConcurrentHashMap的数据结构(高频考点)

11.高并发HashMap的环是如何产生的(高频考点)

12.哪些集合是线程安全的?

13.Collections.SynchronizedCollection方法实现原理是什么?

14.Array和ArrayList有什么区别?使用时注意事项有哪些?

15.常用的集合类有哪些?比如List如何排序(最好说下底层上的实现)?(高频考点)

16.ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?

考察方向分类:多线程与并发编程高频知识考点(高频考点集中地)

1.进程和线程的区别,进程间如何通讯,线程间如何通讯?

2.Java中线程之间如何通信

3.并发和并行的区别

4.Java线程的状态?细说一下BLOCKED和WAITING有什么区别?(高频考点)

5.Java实现多线程的方式有哪些?(高频考点)

6.Java处理多线程的方式有哪些?

7.Java程序中启动一个线程是用run()还是start()?

8.Thread的start方法调用两次会怎么样?Thread是如何保证start方法调用只有一次生效?(高频考点)

9.什么是守护线程?有什么用?

10.两个线程如何串行执行?

11.可以运行时kill掉一个线程吗?

12.Synchronized的实现原理(高频考点)

13.volatile与synchronized的区别是什么?volatile作用(高频考点)

14.synchronized和Lock的区别(高频考点)

15.Atomic类如何保证原子性(CAS操作)(高频考点)

16.AtomicInteger、AtomicBoolean这些类之所以在高并发时高效,共同的原因是?

17.CAS?CAS 有什么缺陷,如何解决?(高频考点)

18.Java不可重入锁与可重入锁的区别如何理解?

19.无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁,解释锁升级?(高频考点)

20.乐观锁 VS 悲观锁?公平锁 VS 非公平锁?独享锁 VS 共享锁?

21.自旋锁 VS 适应性自旋锁,简单介绍

22.死锁发生的原因

23.用java 代码实现一个死锁用例,说说怎么解决死锁问题?回到用例代码下,如何解决死锁问题呢?(高频考点)

24.请实现让10个任务同时并发启动?

25.AQS理论的数据结构是什么样的?(高频考点)

26.ReentrantLock底层公平锁和非公平锁的原理(高频考点)

27.多线程中sleep与wait的区别是什么?

28.notify和notifyAll区别?

29.除了用Object.wait和Object.notifyAll来实现线程间的交互外,你还会常用哪些来实现?

30.ThreadLocal的原理和实现(高频考点)

31.ThreadLocal为什么要使用弱引用和内存泄露问题(高频考点)

32.ThreadLocal怎么解决内存泄露的问题?(高频考点)

33.为什么要使用线程池?

34.线程池的线程数量确定?状态分析?关闭方式?

35.如何控制线程池线程的优先级

36.核心线程池ThreadPoolExecutor的参数/常见线程池的创建参数是什么样的?(高频考点)

37.new ThreadPoolExecutor(10,100,10,TimeUnit.MILLISECONDS,new LinkedBlockingQueue(10));一个这样创建的线程池,当已经有10个任务在运行时,第11个任务提交到此线程池执行的时候会发生什么,为什么?

38.实现一个自定义的ThreadFactory的作用通常是?

39.常见的线程池创建和参数分析?(高频考点)

40.ThreadPoolExecutor的工作流程(高频考点)

41.ScheduledThreadPoolExecutor中的使用的是什么队列?内部如何实现任务排序的?

42.线程池的运行逻辑,FixedThreadPool、CachedThreadPool的原理(高频考点)

43.用Executors.newCachedThreadPool创建的线程池,在运行的过程中有可能产生的风险是?

44.阻塞队列ArrayBlockingQueue、LinkedBlockingQueue分析(高频考点)

45.请合理的使用Queue来实现一个高并发的生产/消费的场景,给些核心的代码片段。

46.线程池关闭原理

47.JUC下的常见类的使用,take、poll的区别,put、offer的区别?

48.Future原理,其局限性是什么?并说说CompletableFuture核心原理?

49.你是否了解fork/join(基本思想)?在工作中是如何使用的?说说他们的优势是什么?(高频考点)

50.Java线程池的调优经验有哪些?(线程池的合理配置)(高频考点)

51.一个请求中,计算操作需要50ms,db操作需要100ms,对于一台8核的机器来说,如果要求cpu利用率达到100%,如何设置线程数?(高频考点)

52.如果系统中不同的请求对应的cpu时间和io时间都不同,那怎么设置线程数量?(高频考点)

53.线程池核心数20,最大600,阻塞队列200,当QPS200(注意是qps)的时候,请求是调第三方阻塞超时,请问怎么提高它的吞吐量(注意不能加机器)?(高频考点)

54.当前线程池是200,线程单次处理请求20ms,那么理论上单节点的qps 是多少呢?

55.多线程对Long数据进行加和会存在什么问题?如何解决?

56.Netty 的线程机制是什么样的?

考察方向分类:其他扩展高频知识考点

1.LRU算法是怎么实现的?大致说明下(高频考点)

2.后台服务出现明显“变慢”,谈谈你的诊断思路?(高频考点)

3.你了解Java应用开发中的注入攻击吗?

4.在Java程序运行阶段,可以用什么命令行工具来查看当前Java程序的一些启动参数值,例如Heap Size等。

5.用什么命令行工具可以查看运行的Java程序的GC状况,请具体写出命令行格式。(高频考点)

6.用什么工具,可以在Java程序运行的情况下跟踪某个方法的执行时间,请求参数信息等,并请解释下工具实现的原理。

7.当一个Java程序接收请求,很长时间都没响应的话,通常你会怎么去排查这种问题?

8.NIO(New I/O)用到的组件有哪些?

9.Netty对比Java NIO做了什么优化?(必考)

(二)JVM相关面试问题整理

相关答案参考:https://blog.csdn.net/xiaofeng10330111/article/details/86516867对JVM重点知识点进行整理,同时这些主要的总结可用于高频面试题https://blog.csdn.net/xiaofeng10330111/article/details/86516867

1.分析JVM运行时数据区域(必考)

2.简单介绍一下Java内存模型(必考)

3.简述内存分配与回收策略

4.垃圾回收机制(必考)

5.强、软、弱、虚引用的区分?

6.Java 堆永久代的回收(该部分归属java7,大概率不会问了)

7.垃圾回收算法(必考)

8.Minor GC和Full GC触发条件

9.Minor GC 和 Full GC 有什么不一样吗?

10.简述GC中Stop the world(STW),并说出安全点

11.各垃圾回收器的特点及区别,怎么做选择?

13.G1和CMS的比较

14.CMS垃圾回收器存在的问题及解决方案(必考)

15.讲讲CMS垃圾回收器?讲讲G1垃圾回收器?(必考)

16.简述ZGC垃圾回收器(必考)

17.双亲委派模型

18.谈谈双亲委派模型的"破坏"

19.JDBC和双亲委派模型关系分析

20.JVM锁优化和锁膨胀过程(必考)

21.JVM中GC Root的选择标准是什么?相关JVM的调优参数有哪些?在工作中怎么调优的?

22.JVM性能监控有哪些?

23.一个4核8G的服务器,初步设置JVM参数,如何分配?(必考)

24.ClassLoader如何工作的?

25.对象的创建过程是什么样的?

26.Java管理内存、内存泄漏和泄漏的原因?(必考)

27.OOM说一下?怎么排查?哪些会导致OOM?(必考)

28.JVM虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题?

29.判定一个对象不可达要回收,举个实际例子来说明。有没有从代码层面去直接分析一下?

(三)MySQL相关面试问题整理

相关答案在这里逐步增加:MySQL相关问题整理(可用作高频面试题和查缺补漏)备注:针对基本问题做一些基本的总结,不是详细解答!1.事务的基本要素2.事务隔离级别(必考)3.如何解决事务的并发问题(脏读,幻读)(必考)4.MVCC多版本并发控制(必考)5.为什么选择B+树作为索引结构(必考)6.索引B+树的叶子节点都可以存哪些东西(必考)7.查询在什么时候不走(预期中的)索引(必考)8.sql如何优化9.explain是如何解析sql的...https://blog.csdn.net/xiaofeng10330111/article/details/105361002

1.现有一个IP地址,你觉得在数据库中以何种方式进行存储最好?性能分析对比字符串存储 vs 整数存储?为什么数据库通常推荐将IPv4地址存储为32位整数而不是字符串的原因

2.事务的基本要素(高频考点)

3.事务隔离级别(高频考点)

4.如何解决事务的并发问题(脏读、不可重复读和幻读)(高频考点)

5.脏读的表现和具体解决并发问题(必考)

6.不可重复读的表现和具体解决并发问题(高频考点)

7.幻读的表现和具体解决并发问题(高频考点)

8.简述MVCC多版本并发控制(高频考点)

9.从CRUD角度说一下InnoDB的MVCC实现机制

10.为什么选择B+树作为索引结构(高频考点)

11.为什么平衡二叉树(或红黑树)不适合作为索引?

12.总是谈及索引,那索引的目的是什么?

13.简单谈谈MYSQL Innodb索引的数据结构,并简述B+树的查找过程(高频考点)

14.说说索引使用注意事项与数据类型选择,或则说说MySQL常见索引

15.谈谈索引优化的思路(高频考点)

16.聚簇索引与非聚簇索引的区别?(高频考点)

17.InnoDB一棵B+树可以存放多少行数据?可否对InnoDB存储引擎B+树的树高进行推导

18.MyisAM索引与InnoDB索引相比较

19.查询在什么时候不走(预期中的)索引(高频考点)

20.SQL如何优化,给出思路(说出部分即可,一下也只是一些思路)

21.SQL执行顺序是什么样的?(高频考点)

22.explain是如何解析sql的

23.order by原理

24.InnoDB的行锁/表锁(高频考点)

25.说说行锁算法(记录锁+间隙锁+下一键锁)(高频考点)

26.myisam和innodb的区别,什么时候选择myisam

27.binlog\redolog\undolog都是什么,起什么作用?(高频考点)

评论 1398
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张彦峰ZYF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值