【转】一些技术面试题目汇总

1  讲一下线程参数的含义

2  Innodb的索引实现

3 Redis的使用,分布式锁的实现

4 操作系统虚拟内存换页的过程

5 TCP三次握手与四次挥手

6 volatile关键字的作用

7 乐观锁、悲观锁

8 HashMap结构,是否线程安全?ConcurrentHashMap如何保证线程安全?

9 算法题:滑动窗口

10 说一下B树和B+树的区别

11 说一下HashMap的实现,扩容机制,扩容时如何保证可操作?

12 Redis扩容机制(渐进式单线程扩容)

13 Spring AOP的原理

14  Spring IoC的原理,如何实现,如何解决循环依赖?

15 CAS概念、原子类实现原理

16 synchronize底层实现,如何实现Lock?

17 AQS有什么特点?

18 介绍各种网络协议。

19 介绍HTTPS协议,详述SSL建立连接过程。

20  DNS在网络层用哪个协议,为什么。

21 反转单链表,复杂链表复制。

22  数组a,先单调地址再单调递减,输出数组中不同元素个数。要求:O(1)空间复杂度,不能改变原数组

23 说一下Java垃圾回收机制

24  64匹马,8个赛道,找最快的4匹马

25 给出两个升序数组A、B和长度m、n,求第k个大的

26 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素

27 讲一下多线程与多进程区别

28  JVM中什么时候会进行垃圾回收?什么样的对象是可以回收的?

29  那你平时是怎么学习Java的呢?你未来的发展方向是什么?确定了么?打算一直做Java?有考虑过转吗?分享最近看的一本书

30 场景题目:设计一个短域名服务:短信存不了太长网站,需要弄成短域名,你该如何设计一个服务,可以为全国的网址服务。

31 数据库的隔离级别

32 sql题,写了个连表查询外加模糊查询

33 算法:镜像二叉树 ......

34 你平时用我们公司的哪个产品比较多?

35 synchronized的CPU原语级别是如何实现的?

36 无锁、偏向锁、轻量级锁、重量级锁有什么差别,升级过程如何?

37 程间通信,同机器进程间通信,跨机器进程间通信,各有什么方法

38 下列三种业务,应该如何使用线程池:

  • 高并发、任务执行时间短的业务
  • 并发不高、任务执行时间长的业务
  • 并发高、业务执行时间长的业务

39 秒杀系统,如何能够撑住100W级别TPS(淘宝最高54万TPS)?

如果平时只有CRUD的经验,不了解多线程与高并发,面对这样面试题,大概率一头雾水。

Java高并发常问面试题

40 synchronized关键字的字节码原语

41 volatile关键字的字节码原语

42 synchronized与volatile的硬件级实现

43 无锁、偏向锁、轻量级锁、重量级锁的升级过程

44 内存屏障的基本概念

45 JVM规范如何要求内存屏障

46 硬件层级内存屏障如何帮助java实现高并发

47  RPC和HTTP的关系是什么?

48  谈谈什么是HTTP的长连接和短连接?

49 TCP 有哪些状态,相应状态的含义?

50 并发包中锁的实现底层(对AQS的理解)?

51 SynchronizedMap和ConcurrentHashMap有什么区别?

52 如何使用阻塞队列实现一个生产者和消费者模型?

53 如何判断一个对象是否存活?简述一下Java 垃圾回收机制?

54 什么是tomcat类加载机制?类加载器双亲委派模型机制?

55 知道动态字符串sds的优缺点么(redis底层数据结构之一)?

56 redis的单线程特性有什么优缺点?

57 用过 Redis 的哪些数据结构, 分别用在什么场景?

58  怎么解决缓存击穿问题的?

59 Hytrix的隔离机制有哪些?Hytrix常见配置是哪些?

60 数据库的高可用架构是怎么样的?

61 为什么mongodb的索引用了B树,而mysql用B+树?

62 生产用的是哪种事务隔离级别,为什么?

63 用过哪些RPC框架,讲讲他们优缺点?

64 为什么不用其他的MQ,最终选择了RokcetMQ?

65 为什么RocketMQ没有选择ZooKeeper,而是自己实现了一个NameServer集群?

66 对Paxos算法了解多少?

67 如果让你来设计一个春晚抢红包架构,你会怎么设计?

68 Java 的信号灯?

69 synchronized 在静态方法和普通方法的区别?

70 怎么实现所有线程在等待某个事件的发生才会去执行?

71 ConcurrenHashMap 介绍?1.8 中为什么要用红黑树?

72 如何保证多线程下 i++ 结果正确?

73 线程池的种类,区别和使用场景?

74 分析线程池的实现原理和线程的调度过程?

75 线程池如何调优,最大数目如何确认?

76 ThreadLocal原理,用的时候需要注意什么?

77 CountDownLatch 和 CyclicBarrier 的用法,以及相互之间的差别?

78 LockSupport工具

79 Condition接口及其实现原理

80 Fork/Join框架的理解

81 分段锁的原理,锁力度减小的思考

82 八种阻塞队列以及各个阻塞队列的特性

83 找到单链表的三等分点,如果单链表是有环的呢【用快慢指针,一个走一步,一个走三步。如果有环,先判断环在哪,找最后一个节点,然后用之前的无环的做法】

84 怎么实现线程安全,各个实现方法有什么区别,volatile关键字的使用,可重入锁的理解,Synchronized是不是可重入锁?

【这里我就主要讲了Synchronized关键字,还有并发包下面的一些锁,以及各自的优缺点和区别。volatile关键字我主要从可见性、原子性和禁止JVM指令重排序三个方面讲的,再讲了一下我在多线程的单例模式double-check中用到volatile关键字禁止JVM指令重排优化。】

85 让我设计一个线程池

因为我简历中有写到我对多线程、并发这一块理解比较好。所以他老问这方面的题。这个问题因为我之前看过ThreadPoolExecutor的源代码,所以我就仿照那个类的设计思路来想的,详细讲了一下核心池、创建线程可以用工厂方法模式来进行设计、线程池状态、阻塞队列、拒绝策略这几个方面。设计的还算比较周全。

86 算法题

从10万个数中找最小的10个,时间复杂度分析(最大堆,考虑内存)

从一个有正有负数组中找连续子数组的最大和,时间复杂度分析(动态规划)

满二叉树第i层有多少个节点,n层的满二叉树共有多少个节点

87 两个文件,每个文件中都有若干个url,找出两个文件中相同的url(用HashMap)

88 数据库优化,如果数据库一个表特别大怎么办 数据库优化我就讲了之前讲过很多遍的点,他问一个表特别大怎么办:大表分小表,怎么实现:使用分区表

89 写出一种11位手机号的正则表达式

90 描述取到一个网页内容的实现步骤,不需要具体实现过程(就是爬虫:取到网页的URL,然后从URL中国获取网页内容),考察逻辑思维能力。

91 一个http请求从开始到结束都经历了哪些过程,简写流程图。

92 javascript中怎样选中一个checkbox,设置它无效的方式。

93 是否可以从一个static方法内部发出对非static方法的调用?

94 如何防止表单重复提交

95 InnoDB支持的四种事务隔离级别名称是什么?有什么区别?说说MySQL隔离级别?

96 消息队列,用到什么场景(削峰,限流,异步)?

多线程与并发:

wait,sleep分别是谁的方法,区别

countLatch的await方法是否安全,怎么改造

线程池参数,整个流程描述

背后的底层原理aqs,cas

ThreadLocal原理,注意事项,参数传递

还有java的锁,内置锁,显示锁,各种容器

及锁优化:锁消除,锁粗化,锁偏向,轻量级锁

什么是多线程并发和并行?

什么是线程安全问题?

什么是共享变量的内存可见性问题?

什么是Java中原子性操作?

什么是Java中的CAS操作,AtomicLong实现原理?

什么是Java指令重排序?

Java中Synchronized关键字的内存语义是什么?

Java中Volatile关键字的内存语义是什么?

什么是伪共享,为何会出现,以及如何避免?

什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?

讲讲ThreadLocal 的实现原理?

ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?

说说InheritableThreadLocal 的实现原理?

InheritableThreadLocal 是如何弥补 ThreadLocal 不支持继承的特性?

CyclicBarrier内部的实现与 CountDownLatch 有何不同?

随机数生成器 Random 类如何使用 CAS 算法保证多线程下新种子的唯一性?

ThreadLocalRandom 是如何利用 ThreadLocal 的原理来解决 Random 的局限性?

Spring 框架中如何使用 ThreadLocal 实现 request scope 作用域 Bean?

并发包中锁的实现底层(对AQS的理解)?

讲讲独占锁 ReentrantLock 原理?

谈谈读写锁 ReentrantReadWriteLock 原理?

StampedLock 锁原理的理解?

谈下对基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理的理解?

ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全?

基于链表的阻塞队列 LinkedBlockingQueue 原理。
————————————————

ZooKeeper 

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

zookeeper 负载均衡和 nginx 负载均衡区别

Zookeeper Watcher 机制--数据变更通知

客户端注册 Watcher 实现

zookeeper 是如何保证事务的顺序一致性的?

Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?

zk 节点宕机如何处理?

Dubbo 

Spring Eureka 从开源转变为闭源,Consul 正在崛起,而 Dubbo 又开始重新更新。目前市场上仍有不少公司使用dubbo我们也需要继续学习。

为什么要用 Dubbo?

默认使用的是什么通信框架,还有别的选择吗?

服务调用是阻塞的吗?

一般使用什么注册中心?还有别的选择吗?

默认使用什么序列化框架,你知道的还有哪些?

Dubbo 的整体架构设计有哪些分层?

Spring Cloud

什么是Spring Cloud?

使用Spring Cloud有什么优势?

服务注册和发现是什么意思?Spring Cloud如何实现?

负载平衡的意义什么?

什么是Hystrix?它如何实现容错?

什么是Hystrix断路器?我们需要它吗?

什么是Netflix Feign?它的优点是什么?

什么是Spring Cloud Bus?我们需要它吗?

Kafka
Kafka 与传统 MQ 消息系统之间有三个关键区别?

讲一讲 kafka 的 ack 的三种机制?

消费者故障,出现活锁问题如何解决?

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。

Netty

1、BIO、NIO和AIO

2、Netty 的各大组件

3、Netty的线程模型

4、TCP 粘包/拆包的原因及解决方法

5、了解哪几种序列化协议?包括使用场景和如何去选择

6、Netty的零拷贝实现

7、Netty的高性能表现在哪些方面

分布式相关

1、Dubbo的底层实现原理和机制

2、描述一个服务从发布到被消费的详细过程

3、分布式系统怎么做服务治理

4、接口的幂等性的概念

5、消息中间件如何解决消息丢失问题

6、Dubbo的服务请求失败怎么处理

7、重连机制会不会造成错误

8、对分布式事务的理解

9、如何实现负载均衡,有哪些算法可以实现?

10、Zookeeper的用途,选举的原理是什么?

11、数据的垂直拆分水平拆分。

12、zookeeper原理和适用场景

13、zookeeper watch机制

14、redis/zk节点宕机如何处理

15、分布式集群下如何做到唯一序列号

15、如何做一个分布式锁

17、用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗

18、MQ系统的数据如何保证不丢失

19、列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题

20、zookeeper的选举策略

21、全局ID

数据库

1、mysql分页有什么优化

2、悲观锁、乐观锁

3、组合索引,最左原则

4、mysql 的表锁、行锁

5、mysql 性能优化

6、mysql的索引分类:B+,hash;什么情况用什么索引

7、事务的特性和隔离级别

MySQL 有哪些存储引擎啊?都有什么区别?

Float、Decimal 存储金额的区别?

Datetime、Timestamp 存储时间的区别?

Char、Varchar、Varbinary 存储字符的区别?

什么是索引?

对比一下B+树索引和 Hash索引?

MySQL索引类型有?

如何管理 MySQL索引?

对Explain参数及重要参数的理解?

索引利弊是什么及索引分类?

二叉树的转置是什么?

聚簇索引和非聚簇索引的区别?

B+tree 如何进行优化?索引遵循哪些原则?存储引擎会进行哪些自动优化?到底何时索引会失效?

索引与锁有什么关系?

还有什么其他的索引类型,各自索引有哪些优缺点?

谈谈对Innodb事务的理解?

说说数据库事务特点及潜在问题?

什么是MySQL隔离级别?

有多少种事务失效的场景,如何解决?

缓存

1、Redis用过哪些数据数据,以及Redis底层怎么实现

2、Redis缓存穿透,缓存雪崩

3、如何使用Redis来实现分布式锁

4、Redis的并发竞争问题如何解决

5、Redis持久化的几种方式,优缺点是什么,怎么实现的

6、Redis的缓存失效策略

7、Redis集群,高可用,原理

8、Redis缓存分片

9、Redis的数据淘汰策略

10 redis队列应用场景?

11 分布式使用场景(储存session)

网络编程

TCP建立连接和断开连接的过程?

HTTP协议的交互流程,HTTP和HTTPS的差异,SSL的交互流程?

TCP的滑动窗口协议有什么用?

HTTP协议都有哪些方法?

Socket交互的基本流程?

讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?

webservice协议(wsdl/soap格式,与restt办议的区别)?

说说Netty线程模型,什么是零拷贝?

DNS解析过程?

TCP如何保证数据的可靠传输的?

分布式

什么是CAP定理?

说说CAP理论和BASE理论?

什么是最终一致性?最终一致性实现方式?

什么是一致性Hash?

讲讲分布式事务?

如何实现分布式锁?

如何实现分布式 Session?

如何保证消息的一致性?

负载均衡的理解?

正向代理和反向代理?

CDN实现原理?

怎么提升系统的QPS和吞吐?

Dubbo的底层实现原理和机制?

描述一个服务从发布到被消费的详细过程?

分布式系统怎么做服务治理?

消息中间件如何解决消息丢失问题?

Dubbo的服务请求失败怎么处理?

对分布式事务的理解?

如何实现负载均衡,有哪些算法可以实现?

Zookeeper的用途,选举的原理是什么?

讲讲数据的垂直拆分水平拆分?

JVM

1、详细jvm内存模型

2、讲讲什么情况下回出现内存溢出,内存泄漏?

3、说说Java线程栈

4、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?

5、JVM 出现 fullGC 很频繁,怎么去线上排查问题?

6、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?

7、类的实例化顺序

8、JVM垃圾回收机制,何时触发MinorGC等操作

9、JVM 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的

10、各种回收器,各自优缺点,重点CMS、G1

11、各种回收算法

12、OOM错误,stackoverflow错误,permgen space错误

JVM三大性能调优参数,JVM 几个重要的参数

JVM调优

JVM内存管理,JVM的常见的垃圾收集器,

G1垃圾收集器。GC调优,Minor GC ,Full GC 触发条件

描述JVM中一次Full gc过程

Java 中都有哪些引用类型?

如何判断是否有内存泄露?定位 Full GC 发生的原因,有哪些方式?

Elasticsearch 
elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

elasticsearch 索引数据多了怎么办,如何调优,部署

elasticsearch 是如何实现 master 选举的

Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法

详细描述一下 Elasticsearch 更新和删除文档的过程。

Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Spring

1、BeanFactory 和 FactoryBean?

2、Spring IOC 的理解,其初始化过程?

3、BeanFactory 和 ApplicationContext?

4、Spring Bean 的生命周期,如何被管理的?

5、Spring Bean 的加载过程是怎样的?

6、如果要你实现Spring AOP,请问怎么实现?

7、如果要你实现Spring IOC,你会注意哪些问题?

8、Spring 是如何管理事务的,事务管理机制?

9、Spring 的不同事务传播行为有哪些,干什么用的?

10、Spring 中用到了那些设计模式?

11、Spring MVC 的工作原理?

12、Spring 循环注入的原理?

13、Spring AOP的理解,各个术语,他们是怎么相互工作的?

14、Spring 如何保证 Controller 并发的安全?

项目

1、明确项目是做什么的

2、明确项目的价值。(为什么做这个项目,它解决了用户什么痛点,它带来什么价值?)

3、明确项目的功能。(这个项目涉及哪些功能?)

4、明确项目的技术。(这个项目用到哪些技术?)

5、明确个人在项目中的位置和作用。(你在这个项目的承担角色?)

6、明确项目的整体架构。

7、明确项目的优缺点,如果重新设计你会如何设计。

8、明确项目的亮点。(这个项目有什么亮点?)

9、明确技术成长。(你通过这个项目有哪些技术成长?)

总结

在以往的面试经历中总结了一些经验,其实当你面试到一个水平相对较高的职位时,往往较量的技术方面已经是其次,大部分公司在与你聊完技术之后,更看重你的沟通能力、解决问题的能力、以及你以往的一些比较成功的经历。

一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你 的简历来问的;

能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试 之前好好回顾一下自己所做的项目;

和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是 如何使用的;

建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。他们想找的不光是技术大拿,更重要的事可以跟公司共同进步的伙伴,所以当你真正开始面试,那么就要拿出自己的真诚,让HR感受到你对公司的兴趣、热情和自信,从谈吐上表现出果断和坚定往往会是很多招聘人事更加青睐的。如果你对某一个公司很感兴趣并且技术通关了,那么如何才能在多个选择中让公司选择你,那就是可以让HR在和你的交流中感觉到愉快和流畅,这点事相当重要的,可以胜任一份工作的人很多,但是能够在沟通上略胜一筹,那么这份工作一定会是非你莫属!

你别看我现在薪资这么高,那些面试题我至少刷了七遍以上。

猜你喜欢

转载自www.cnblogs.com/Koaler/p/12825080.html