本文主要是介绍五面拿下阿里飞猪offer,2021年网易Java岗面试必问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、背景
我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动、限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,为了避免并发问题,防止库存超卖,给用户提供一个良好的购物体验,这些系统中都会用到锁的机制。
对于单进程的并发场景,可以使用编程语言及相应的类库提供的锁,如 Java 中的 synchronized 语法以及 ReentrantLock 类等,避免并发问题。
专题5:Java序列化
-
1、什么是java序列化,如何实现java序列化?
-
2、保存(持久化)对象及其状态到内存或者磁盘
-
3、序列化对象以字节数组保持-静态成员不保存
-
4、序列化用户远程对象传输
-
5、Serializable 实现序列化
-
6、writeObject 和 readObject 自定义序列化策略
-
7、序列化 ID
-
8、序列化并不保存静态变量
-
9、Transient 关键字阻止该变量被序列化到文件中
-
10、序列化(深 clone 一中实现)
专题6:Java注解
-
1、4种标准元注解是哪四种?
-
2、注解是什么?
专题7:多线程&并发
-
1、Java中实现多线程有几种方法
-
2、继承 Thread 类
-
3、实现 Runnable 接口。
-
4、ExecutorService、 Callable、 Future 有返回值线程
-
5、基于线程池的方式
-
6、4 种线程池
-
7、如何停止一个正在运行的线程
-
8、notify()和notifyAll()有什么区别?
-
9、sleep()和wait() 有什么区别?
-
10、volatile 是什么?可以保证有序性吗?
-
11、Thread 类中的start() 和 run() 方法有什么区别?
-
12、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
-
13、为什么wait和notify方法要在同步块中调用?
-
14、Java中interrupted 和 isInterruptedd方法的区别?
-
15、Java中synchronized 和 ReentrantLock 有什么不同?
-
16、有三个线程T1,T2,T3,如何保证顺序执行?
-
17、SynchronizedMap和ConcurrentHashMap有什么区别?
-
18、什么是线程安全
-
19、Thread类中的yield方法有什么作用?
-
20、Java线程池中submit() 和 execute()方法有什么区别?
-
21、说一说自己对于 synchronized 关键字的了解
-
22、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
-
23、什么是线程安全?Vector是一个线程安全类吗?
-
24、volatile关键字的作用?
-
25、简述一下你对线程池的理解
-
26、线程生命周期(状态)
-
27、新建状态(NEW)
-
28、就绪状态(RUNNABLE)
-
29、运行状态(RUNNING)
-
30、阻塞状态(BLOCKED)
-
31、线程死亡(DEAD)
-
32、终止线程 4 种方式
-
33、start 与 run 区别
-
34、JAVA 后台线程
-
35、什么是乐观锁
-
36、什么是悲观锁
-
37、什么是自旋锁
-
38、Synchronized 同步锁
-
39、ReentrantLock
-
40、Condition 类和 Object 类锁方法区别区别
-
41、tryLock 和 lock 和 lockInterruptibly 的区别
-
42、Semaphore 信号量
-
43、Semaphore 与 ReentrantLock 区别
-
44、可重入锁(递归锁)
-
45、公平锁与非公平锁
-
46、ReadWriteLock 读写锁
-
47、共享锁和独占锁
-
48、重量级锁(Mutex Lock)
-
49、轻量级锁
-
50、偏向锁
-
51、分段锁
-
52、锁优化
-
53、线程基本方法
-
54、线程等待(wait)
-
55、线程睡眠(sleep)
-
56、线程让步(yield)
-
57、线程中断(interrupt)
-
58、Join 等待其他线程终止
-
59、为什么要用 join()方法?
-
60、线程唤醒(notify)
-
61、线程其他方法
-
62、进程
-
63、上下文
-
64、寄存器
-
65、程序计数器
-
66、PCB-“切换桢”
-
67、上下文切换的活动
-
68、引起线程上下文切换的原因
-
69、同步锁
-
70、死锁
-
71、线程池原理
-
72、线程复
-
73、线程池的组成
-
74、拒绝策略
-
75、Java 线程池工作过程
-
76、JAVA 阻塞队列原理
-
77、Java 中的阻塞队列
-
78、ArrayBlockingQueue(公平、非公平)
-
79、LinkedBlockingQueue(两个独立锁提高并发)
-
80、PriorityBlockingQueue(compareTo 排序实现优先)
-
81、DelayQueue(缓存失效、定时任务 )
-
82、SynchronousQueue(不存储数据、可用于传递数据)
-
83、LinkedTransferQueue
-
84、LinkedBlockingDeque
-
85、在 java 中守护线程和本地线程区别
-
86、线程与进程的区别?
-
87、什么是多线程中的上下文切换?
-
88、死锁与活锁的区别,死锁与饥饿的区别?
-
89、Java 中用到的线程调度算法是什么?
-
90、什么是线程组,为什么在 Java 中不推荐使用?
-
91、为什么使用 Executor 框架?
-
92、在 Java 中 Executor 和 Executors 的区别?
-
93、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?
-
94、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
-
95、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
-
96、什么是 Executors 框架?
-
97、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
-
98、什么是 Callable 和 Future?
-
99、什么是 FutureTask?使用 ExecutorService 启动任务。
-
100、什么是并发容器的实现?
-
101、多线程同步和互斥有几种实现方法,都是什么?
-
102、什么是竞争条件?你怎样发现和解决竞争?
-
103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
-
104、Java中,你怎样唤醒一个阻塞的线程?
-
105、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
-
106、什么是不可变对象,它对写并发应用有什么帮助?
-
107、Java 中用到的线程调度算法是什么?
-
108、什么是线程组,为什么在 Java 中不推荐使用?
专题8:JVM
-
1、java中会存在内存泄漏吗,请简单描述。
-
2、64 位 JVM 中,int 的长度是多数?
-
3、Serial 与 Parallel GC 之间的不同之处?
-
4、32 位和 64 位的 JVM,int 类型变量的长度是多数?
-
5、Java 中 WeakReference 与 SoftReference 的区别?
-
6、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用?
-
7、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
-
8、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
-
9、JRE、JDK、JVM 及 JIT 之间有什么不同?
-
10、解释 Java 堆空间及 GC?
-
11、JVM 内存区域
-
12、程序计数器(线程私有)
-
13、虚拟机栈(线程私有)
-
14、本地方法区(线程私有)
-
15、你能保证 GC 执行吗?
-
16、怎么获取 Java 程序使用的内存?堆使用的百分比?
-
17、Java 中堆和栈有什么区别?
-
18、描述一下 JVM 加载 class 文件的原理机制
-
19、GC 是什么?为什么要有 GC?
-
20、堆(Heap-线程共享) -运行时数据区
-
21、方法区/永久代(线程共享)
-
22、JVM 运行时内存
-
23、新生代
-
24、老年代
-
25、永久代
-
26、JAVA8 与元数据
-
27、引用计数法
-
28、可达性分析
-
29、标记清除算法( Mark-Sweep)
-
30、复制算法(copying)
-
31、标记整理算法(Mark-Compact)
-
32、分代收集算法
-
33、新生代与复制算法
-
34、老年代与标记复制算法
-
35、JAVA 强引用
-
36、JAVA软引用
-
37、JAVA弱引用
-
38、JAVA虚引用
-
39、分代收集算法
-
40、在新生代-复制算法
-
41、在老年代-标记整理算法
-
42、分区收集算法
-
43、GC 垃圾收集器
-
44、Serial 垃圾收集器(单线程、 复制算法)
-
45、ParNew 垃圾收集器(Serial+多线程)
-
46、Parallel Scavenge 收集器(多线程复制算法、高效)
-
57、Serial Old 收集器(单线程标记整理算法 )
-
58、Parallel Old 收集器(多线程标记整理算法)
-
59、CMS 收集器(多线程标记清除算法)
-
60、G1 收集器
-
61、JVM 类加载机制
-
62、类加载器
-
63、双亲委派
-
64、OSGI( 动态模型系统)
-
65、动态改变构造
-
66、模块化编程与热插拔
-
67、JVM内存模型
-
68、栈
-
69、本地方法栈
-
70、程序计数器
-
71、堆
-
72、方法区
-
73、分代回收
-
74、堆和栈的区别
-
75、什么时候会触发FullGC
-
76、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
-
77、对象分配规则
-
78、描述一下JVM加载class文件的原理机制?
-
79、Java对象创建过程
-
80、简述Java的对象结构
-
81、如何判断对象可以被回收
-
82、JVM的永久代中会发生垃圾回收么
-
83、垃圾收集算法
-
84、调优命令有哪些?
-
85、调优工具
-
86、Minor GC与Full GC分别在什么时候发生?
-
87、你知道哪些JVM性能调优
专题9:Mysql
-
1、数据库存储引擎
-
2、InnoDB(B+树)
-
2、TokuDB( Fractal Tree-节点带数据)
-
3、MyIASM
-
4、Memory
-
5、数据库引擎有哪些
-
6、InnoDB与MyISAM的区别
-
7、索引
-
8、常见索引原则有
-
9、数据库的三范式是什么
-
10、第一范式(1st NF - 列都是不可再分)
-
11、第二范式(2nd NF- 每个表只描述一件事情)
-
12、第三范式(3rd NF- 不存在对非主键列的传递依赖)
-
13、数据库是事务
-
14、SQL优化
-
15、简单说一说drop、delete与truncate的区别
-
16、什么是视图
-
17、什么是内联接、左外联接、右外联接?
-
18、并发事务带来哪些问题?
-
19、事务隔离级别有哪些?MySQL的默认隔离级别是?
-
20、大表如何优化?
-
21、水平分区
-
22、分库分表之后,id 主键如何处理
-
23、存储过程(特定功能的 SQL 语句集)
-
24、存储过程优化思路
-
25、触发器(一段能自动执行的程序)
-
26、数据库并发策略
-
27、MySQL 中有哪几种锁?
-
28、MySQL 中有哪些不同的表格?
-
29、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
-
30、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
-
31、CHAR 和 VARCHAR 的区别?
-
32、主键和候选键有什么区别?
-
33、myisamchk 是用来做什么的?
-
34、MyISAM Static 和 MyISAM Dynamic 有什么区别?
-
35、如果一个表有一列定义为 TIMESTAMP,将发生什么?
-
36、你怎么看到为表格定义的所有索引?
-
37、LIKE 声明中的%和_是什么意思?
-
38、列对比运算符是什么?
-
39、BLOB 和 TEXT 有什么区别?
-
40、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
-
41、MyISAM 表格将在哪里存储,并且还提供其存储格式?
-
42、MySQL 如何优化 DISTINCT?
-
43、如何显示前 50 行?
-
44、可以使用多少列创建索引?
-
45、NOW()和 CURRENT_DATE()有什么区别?
-
46、什么是非标准字符串类型?
-
47、什么是通用 SQL 函数?
-
48、MySQL 支持事务吗?
-
49、MySQL 里记录货币用什么字段类型好
-
50、MySQL 有关权限的表都有哪几个?
-
51、列的字符串类型可以是什么?
-
52、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
-
53、锁的优化策略
-
54、索引的底层实现原理和优化
-
55、什么情况下设置了索引但无法使用
-
56、实践中如何优化 MySQL
-
57、优化数据库的方法
-
58、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
-
59、数据库中的事务是什么?
-
60、SQL 注入漏洞产生的原因?如何防止?
-
61、为表中得字段选择合适得数据类型
-
62、存储时期
-
63、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题
-
64、解释 MySQL 外连接、内连接与自连接的区别
-
65、Myql 中的事务回滚机制概述
-
66、SQL 语言包括哪几部分?每部分都有哪些操作关键
-
67、完整性约束包括哪些?
-
68、什么是锁?
-
69、什么叫视图?游标是什么?
-
70、什么是存储过程?用什么来调用?
-
71、如何通俗地理解三个范式?
-
72、什么是基本表?什么是视图?
-
73、试述视图的优点?
-
74、NULL 是什么意思
-
75、主键、外键和索引的区别?
-
76、你可以用什么来确保表格里的字段只接受特定范围里的值?
-
77、说说对 SQL 语句优化有哪些方法?(选择几条)
-
78、什么是乐观锁
-
79、什么是悲观锁
-
80、什么是时间戳
-
81、什么是行级锁
-
82、什么是表级锁
-
83、什么是页级锁
最后
提供一下免费的Java架构学习资料给大家,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
需要的朋友可以戳这里免费领取
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
么?
-
70、什么是存储过程?用什么来调用?
-
71、如何通俗地理解三个范式?
-
72、什么是基本表?什么是视图?
-
73、试述视图的优点?
-
74、NULL 是什么意思
-
75、主键、外键和索引的区别?
-
76、你可以用什么来确保表格里的字段只接受特定范围里的值?
-
77、说说对 SQL 语句优化有哪些方法?(选择几条)
-
78、什么是乐观锁
-
79、什么是悲观锁
-
80、什么是时间戳
-
81、什么是行级锁
-
82、什么是表级锁
-
83、什么是页级锁
最后
提供一下免费的Java架构学习资料给大家,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
需要的朋友可以戳这里免费领取
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
这篇关于五面拿下阿里飞猪offer,2021年网易Java岗面试必问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!