赞
踩
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
Nginx相关
数据库相关
Redis相关
Linux相关
情景模拟&其他
曹操出行
京东
百度
腾讯
阿里巴巴
爱奇艺
搜狐
58同城
国美在线
小米
去哪儿
快手
Java 社招
1.手撕代码。牛客题霸()上的原题,可以去看看:NC20数字字符串转化成IP地址
2.定义Integer x=20 Integer y=200 在内存里是个什么过程?
3.volite关键字的原理?它能保证原子性吗?AtomicInteger底层怎么实现的?
4.threadLocal关键字有用过吗?如果没有重写initialValue方法就直接get会怎样?
5.hashMap与concurrentHashMap原理和区别?
6.hashMap什么情况下会出现循环链表?concurrentHashMap写的时候用什么锁?7.RenteenLock底层是怎么保证线程安全的?
8.反射能获取到父类的私有方法吗?怎么防止反射破坏单例模式?
9.描述下JVM内存模型。每个区的作用是什么?堆内存的工作原理,为什么需要两个幸存区?只有一个行不行?老生代是用什么垃圾回收算法
10.怎么创建一个线程池,传入的参数分别什么含义?线程池是怎么实现维持核心线程数的?怎么实现一个自定义的拒绝策略?
10.描述下多线程原理。怎么开启一个线程?start和run方法有什么区别?
10.怎么创建一个线程池,传入的参数分别什么含义?线程池是怎么实现维持核心线程数的?怎么实现一个自定义的拒绝策略?
11.Socket编程 nio(这一块我不太熟就说没了解过,面试官就没细问了)
1.你用过哪些开源框架?最熟悉的是哪个?(这里我说了spring,所以后边的问题都是围绕spring的)
2.描述下spring的ioc和aop。
你常用哪一种注入方式?BeanFactory和ApplicationContext有什么区别?你们项目()里用的哪个?说一下spring bean的生命周期。
AOP实现原理是什么?两种动态代理实现原理?JDK动态代理为什么要实现接口?
3.spring task是怎么实现的?
4.spring事务你是怎么用的?加了@Transcational注解spring都做了哪些工作?怎么知道事务执行成功了?
事务隔离级别?mysql默认级别是什么?事务传播属性?spring默认是什么?嵌套事务子事务什么时候commit?
5.spring和springMVC是什么关系?有没有用过JdbcTemplate?
6.springMVC中对整个请求的处理流程是怎样的?返回json的话是用哪个view?
1.HTTP 1.1版本增加了哪些内容?有哪几种请求方式?
2.描述下HTTP三次握手和四次挥手过程?为什么需要四次挥手?为什么TIME_WAIT状态需要经过两个最大报文段生存时间才能到close状态?
3.浏览器发起一个请求到收到响应中间经历了哪些过程?知道多少就说多少,越详细越好。
1.nginx有哪些模块?你比较熟悉哪个?
2.proxy_cache你是怎么配置的?缓存是存在哪里?具体是怎么命中缓存的?
简历里有写nginx,结果问得几个问题我都没答好,面试官就没再多问了,囧~
1.mysql索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里?
2.哪些情况下建索引?解释下最左匹配原则?
现在一个表有三列a b c,组合索引(a,b,c)查询的时候where a like ? and b=? and c=?能用到这个组合索引吗?为什么?
3.explain执行计划看过没有?其中type字段都有哪些值?分别代表什么?
4.你有哪些sql调优经验?
1.redis有哪几种数据结构?给你一个key怎么知道是用的哪种结构?
2.怎么查看所有的key?redis怎么切换库?怎么清数据?
3.描述下redis淘汰策略?如果没有数据可以淘汰活着没有配置淘汰策略读请求可以正常执行吗?
5.项目里用redis存哪些数据?为什么用redis?和jetty本地缓存有什么区别?
1.怎么查看某个进程中的线程?
2.怎么批量替换一个文件夹下所有文件中的一个字符?(sed命令)
3.有没有用过jps jmap jstack jstat 命令,分别说下有哪些常用参数,知道多少就说多少。
我这里结合自己用jmap jstack定位到线上问题的经验说的,答完后感觉面试官挺满意的,所以说实践很重要啊~
1.设计一个系统,每天有100亿条数据,需要在后台做实时展示和查找。
我当时回答的大体思路是nginx负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。
面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?
2.用代码实现cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。
3.手撕代码。牛客题霸上的原题,可以去看看:NC127 最长公共子串
4.如果现在有一台服务器突然变得很慢,怎么去定位问题?
社招 Java 3年工作经验
JUC 里的 ReentrantLock 和 synchronized 有什么区别?(实现方式)
讲讲对 AQS 的理解(AQS 的实现原理)
什么是 CAS?
synchronized 和 CAS 的区别?
CAS 有什么问题?
线程池的原理?
线程池中什么情况下会创建非核心线程?
线程池中什么情况下会触发拒绝策略?
Java 堆的结构
如果发生 OOM 如何排查解决?
新生代用什么GC算法?GC过程?
老年代用什么GC算法?GC过程?
G1垃圾回收器的特点
聊聊对事务的理解(什么是事务?事务的特性?)
事务的隔离级别
InnoDB 和 MyISAM 的区别?
如何优化慢 SQL?
一亿的表,很多复杂的查询条件,查第一万页,如何优化?分库分表查询过程?
二阶段、三阶段、TCC、seata
RocketMQ / Kafka 的存储原理
Netty
Dubbo 原理
如果注册中心挂了,消费者还能连上提供者吗?为什么?
Dubbo 的 SPI 机制
基于 Dubbo 能做什么扩展?
Dubbo 负载均衡算法
选一个重点项目讲讲,设计、问题等等
**1、手撕代码。牛客题霸上的原题,可以去看看:**NC3链表中环的入口节点
**2、**Redis 的数据结构及使用场景
(1)String字符串:字符串类型是 Redis 最基础的数据结构,首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,我们常使用的 set key value 命令就是字符串。常用在缓存、计数、共享Session、限速等。
(2)Hash哈希:在Redis中,哈希类型是指键值本身又是一个键值对 结构,添加命令:hset key field value。哈希可以用来存放用户信息,比如实现购物车。
(3)List列表(双向链表):列表(list)类型是用来存储多个有序的字符串。可以做简单的消息队列的功能。
(4)Set集合:集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一 样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过 索引下标获取元素。利用 Set 的交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。
(5)Sorted Set有序集合(跳表实现):Sorted Set 多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。可以做排行榜应用,取 TOP N 操作。
3、zset跳表的数据结构
4、ZAB协议
ZAB协议包括两种基本的模式:崩溃恢复和消息广播。当整个 Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有服务器进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步。 当集群中超过半数机器与该 Leader 服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader 服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。
5、volatile作用
(1)volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。(共享内存,私有内存)
(2)volatile关键字通过“内存屏障”来防止指令被重排序。
1、手撕代码。牛客题霸上的原题,可以去看看:NC116把数字翻译成字符串
2、进程的组成部分
进程由进程控制块(PCB)、程序段、数据段三部分组成。
3、Redis的应用场景
(1)缓存
(2)共享Session
(3)消息队列系统
(4)分布式锁
4、单线程的Redis为什么快?
(1)纯内存操作
(2)单线程操作,避免了频繁的上下文切换
(3)合理高效的数据结构
(4)采用了非阻塞I/O多路复用机制
5、事务的基本要素**(事务特性)**
(1)原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
(2)一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。
(3)隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
(4)持久性:事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
6、CAP定理
一个分布式系统不可能同时满足以下三种,一致性,可用性,分区容错性。在此ZooKeeper保证的是CP,ZooKeeper不能保证每次服务请求的可用性,在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果。 另外在进行leader选举时集群都是不可用,所以说,ZooKeeper不能保证服务可用性。
7、HashMap和ConcurrentHashMap区别
(1)由于HashMap是线程不同步的,虽然处理数据的效率高,但是在多线程的情况下存在着安全问题,因此设计了CurrentHashMap来解决多线程安全问题。
(2)HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。
8、Kafka判断一个节点还活着的两个条件
(1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每个节点的连接
(2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太久。
社招 JAVA 1年
1、 NC16 判断二叉树是否对称
2、NC32 求平方根
3、NC2 重排链表
社招 JAVA 2年
腾讯一面:(总耗时:120min)
1、jvm内存结构介绍、代码调用过程中的内存流程;
2、java如何分配内存,多线程呢?
3、Spring如何加载注解
4、Spring启动流程、bean实例化
5、xxljob原理,使用流程
6、OOM定位、解决方式,流程
7、讲项目xxxxx
8、redis pipline是全双工还是半双工
9、云原生是什么?(这个真不会)
10、rabbitMQ原理、流程、用途
11、rabbitMQ如何保证数据到达
12、Http 1.0 1.1 2.0
13、注解使用、如何扫描
14、cas原理,缓存一致性原理(volatile、synchronized、可见性)
16、jedis是否使用链接池,如何处理有序数据
算法:
go代码求输出(面试官让我按自己理解猜…)
leetcode 74. 搜索二维矩阵
1、项目简述(blablabla…);
2、MQ选型;(RocketMQ、ZeroMQ、Kafka、RabbitMQ优缺点)
3、消息可靠性保证;(数据幂等、高可用镜像集群、Confirm机制、事务机制、持久性)
4、Redis类型及源码简述;(String、Hash、ZSet、Set、Dict、GEO、HyperLogLog、BloomFilter、Stream、Bitmap等)
5、MySql和MongoDB区别;( blablabla)
6、JVM中如何扫描对象;(root、hotspot算法、cardTable)
7、GC算法;(复制、标记清除、标记整理、内存碎片及解决方式)
8、代码运行流程对应JVM内部流程;(几个关键字:栈桢、操作数栈、)
9、红黑树;(这个简单,自己吹牛逼…;红黑节点、特性等)
10、线程&协程;(blabla…)
11、阻塞IO、非阻塞IO、同步IO、异步IO、IO多路复用(区别及内部流程、用户态内核态blablabla…);
12、死锁及打破方式;(互斥、请求与保持、循环等待、阻塞;超时、银行家算法)
13、一致性Hash算法详解;(热点分布、2的31个槽、虚拟节点等)
14、看什么书;(随便挑一本,开始背书)
15、对c++和java看法;(吹牛逼,吹到面试官high点)
16、自己技术发展方向;(技术or管理)
17、读过什么组件源码;(redis、JVM、MyBatis、Spring及相关基本都读过、sharding-jdbc等)
18、随便讲个源码组件源码结构及内部核心原理;(redis、MyBatis等吹牛逼)
算法:
a、链表相加;
b、leetcode 1567 乘积为正数的最长子数组长度;(滑动窗口、贪心分治法求解)
两轮面试都是电面。
一面总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开,可能因为是云安全部门,有一半时间在考察JVM,还提问了一些编译优化的知识。
一面结束后很快安排了二面,相对一面,二面的问题更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。
面试问题:
1、JVM内存分代。
2、Java 8的内存分代改进。
3、深入分析了Classloader,双亲委派机制。
4、JVM的编译优化。
5、对Java内存模型的理解,以及其在并发中的应用。
6、指令重排序,内存栅栏等。
7、HashMap的并发问题。
8、了解LinkedHashMap的应用吗?
9、在工作中遇到过哪些设计模式,是如何应用的?
爱奇艺的面试都是二对一,每轮面试两个面试官。
一面比较顺利,主要是Java基础,Spring原理,Java NIO,并发和集合框架等,可能是因为视频网站,爱奇艺考察网络原理的知识多,比如TCP/IP协议、长连接与短连接等。
一面提到了自己可能会在下半年学习大数据与机器学习相关的知识,二面就在这上面栽了跟头,问了很多海量数据的问题。
面试问题:
1、手撕代码。牛客题霸上的原题,可以去练练:NC22合并两个有序的数组。
2、TCP/IP协议。
3、长连接与短连接。
4、mapreduce过程。
5、多路归并的时间复杂度。
6、海量url去重类问题。
7、Java NIO使用。
7、倒排索引的原理。
8、对分词技术的了解。
面试中给了一个具体场景,考察对MapReduce过程的理解,比如Map阶段和Reduce阶段是如何进行的等,Reduce阶段面试官希望分析给出一个多路归并的时间复杂度,用外排序的知识简单分析了一下,回答的不太好。回来以后搜索了胜者树和败者树的优化,发现这里面的内容还挺多, 深刻体会到有些知识点如果平时掌握的不够全面深刻,很难信手拈来 。
JAVA 1年
一面:
1、final是干嘛的,用在什么地方,你们项目中有用到过吗
2、有那些集合,一个一个说linkedlist,arraylist,hashmap
3、说一下hashmap基本结构,和hashmap的扩容,hashmap的并发
4、说一下jvm的垃圾回收器,有那些,算法有哪些,他们的优缺点
5、线程池用过吗?用来干什么?说一下线程池。
6、做过sql优化吗(我简历上写了),说一下吧。
7、mysql的索引说一下,b+树的优缺点
8、说一下dubbo的架构(简历上有写)
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3、说一下hashmap基本结构,和hashmap的扩容,hashmap的并发
4、说一下jvm的垃圾回收器,有那些,算法有哪些,他们的优缺点
5、线程池用过吗?用来干什么?说一下线程池。
6、做过sql优化吗(我简历上写了),说一下吧。
7、mysql的索引说一下,b+树的优缺点
8、说一下dubbo的架构(简历上有写)
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-vCnfhBlJ-1713010176019)]
[外链图片转存中…(img-O3nnOI0d-1713010176019)]
更多笔记分享
[外链图片转存中…(img-8k8SWTpM-1713010176020)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-79II4oZL-1713010176020)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。