最后
由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。
本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
面试前的准备:
=======
面试的时候99.99%的公司都会让你做一下自我介绍和最近做的一个项目,所以自我介绍和项目要提前打好草稿,特别是不太会说话的。
自我介绍:
我觉得简洁一点就行了,一般面试官都会趁着你自我介绍的时候看简历,也没认真听你做自我介绍。
下面是我自己打的草稿:
面试官你好,非常荣幸参加贵公司的本次面试。下面我简单的介绍一下我的个人情况,我叫xx,xx年毕业于xxx学院xxx专业。目前在xxx公司工作,主要是从事xxx开发。 通过xxx招聘平台关注到贵公司岗位的招聘信息,这个职位比较符合我未来的职业发展,而且贵公司的业务对我都非常有吸引力,非常希望能够进入贵公司发展。
我对技术有浓厚的兴趣,专业知识面宽,技术也相对全面,责任心强,思路清晰,沟通能力好,熟悉JAVA体系, 对各种开发流程和主流架构模式,设计模式和UML,有较强的需求分析、架构设计、项目管理能力,并有丰富的实战经验; 出于对工程师文化的向往,我在研发团队管理期间,尝试了多种方法去建立良性的团队氛围,并有效的改善了研发效率; 技术是为产品支撑的,所以我现在也在熟悉产品设计过程,希望可以结合公司发展战略,营销策略,跟着团队打造出一个好的产品。
上面的可以适当简化一下,能说出来多少取决于你的记忆力。
项目介绍:
这个是真的要提前准备好说辞,不然你面试的时候边想边说,说起来磕磕巴巴的,你给面试官的第一印象就不好了,至少说明你的表述能力不强。
介绍项目的话可以不用太紧张,面试官才拿到你的简历看多久,所以肯定是对你自己的项目是最熟悉的。需要注意的地方就是不要只讲一些业务相关的,面试官不需要知道这些,他只关心你的技术能力是否足够,通过你的描述知道你使用了什么技术,再根据相关的技术进行提问。
贴一下我的草稿:
我在xx公司做的xx系统,客户主要是xx,项目的功能主要是提供代理雨伞,代理快递,代理订餐,图书借阅等服务,后台用的是主体架构是使用Spring Cloud,微服务模块划分为xxx,我主要负责其中xxx几个模块的开发, orm用的是mybatis,数据库是用的mysql,缓存是用的redis,前台用到了vue技术。共有xx个同事参与开发,整个项目持续了xx时间。
面试官会对他感兴趣的点进行提问。
面经分享:
=====
(面试次数有点多,着重讲述几次经典面试。)
阿里面经分享:
阿里一面:
-
做一下自我介绍吧,简单说一下你的项目;
-
有遇到过内存泄漏吗?你们是怎么解决的?
-
java的基本类型有哪几个?String是不是java的基本类型?String为什么要是final类型的?
-
反射机制的底层实现是什么?动态呢?动态的实现原理?
-
hashmap了解吗?说一下hashmap相关的一些东西?hashmap是线程安全的吗?为什么是线程安全的?
-
concureenthashmap了解吗?他是如何实现线程安全的?
-
你刚才说1.8基于cas?cas的ABA问题怎么解决?
-
说一下JVM的线程模型?这些区域都分别是干啥用的?
-
说一下java类加载器的工作机制?类加载在哪个区域进行的?
-
说一下java的线程模型?
-
violate了解吗?它的原理是什么?violate是线程安全的吗?
-
保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读
-
数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?mysql慢语句调优做过吗?说说你是怎么做的?
-
redis了解吗?你说说怎么用redis实现分布式锁?
-
spring中Bean的作用域,springMVC的controller是线程安全的吗?怎么去保证线程安全呢?
-
消息队列有用过吗?说说你怎么用的?
-
计算机网络了解吗?说一说TCP三次握手和四次挥手吧
-
time_wait状态产生的原因是什么?,有什么危害?可以如何避免?
-
寻找旋转排序数组中的最小值
阿里二面:
1、手撕算法
-
10个多线程保证 i从0加到10 (差点翻车,主线程忙等另外10个线程完结)
-
反转链表
-
上台阶(n=80)
2、操作系统
-
常用的linux命令说一下
-
操作系统中的信号 和 信号量有什么关系
-
epoll 和 Selector 有什么区别?
3、计算机网络
- 说一下拥塞控制
4、数据结构
-
说一下红黑树,你平时用的技术哪里用到了它?
-
哈希表怎么处理冲突?
5、项目相关
-
把项目放到服务器上运行的时候有没有遇到什么问题?查看项目运行的状态怎么做?
-
spring 和 springboot的关系你是怎么理解的?
-
Spring IOC和AOP说一下你的理解
-
为什么用消息队列?
-
对于消息的重复消费你有什么设计方案吗?
阿里三面:
-
你怎么学的Java啊?
-
设计模式了解吗?单例讲一下,懒汉饿汉double-check,怎么实现。策略模式,外观模式,适配器模式,装饰器模式,分别讲一下
-
联合索引什么时候不会触发索引?
-
AOP了解么,有什么好处,如何使用,怎么实现的?
-
支付宝到银行的转账业务怎么实现?
-
redis实现分布式锁
-
三台机器集群,按不同权重访问,怎么做?
阿里四面(hr):
-
先介绍一下你自己吧
-
说一下四种IO模型
-
平时怎么去学习的?
-
为什么你说学习了要去实践?
-
说一下的最大的优点和缺点
-
举一下你缺点的例子
-
想象一下你几十年后是怎样的生活?
-
你觉得最痛苦的一段时间
-
对你影响最大的一件事情
-
在安排活动的过程中有没有发生什么冲突?
-
你有什么崇拜的人吗?
-
你有什么想问的?
美团面经答案整理
字节面经:
=====
字节跳动一面:
-
实习项目就聊了差不多30分钟
-
问了MySQL的索引
-
redis的string类型
-
为什么使用RabbitMQ?
-
RabbitMQ有哪些部件?如何保证准确性跟一致性?
-
hashcode和equals?
-
动态代理
-
快排
-
无序数组计算每个位置大于前面的多少个数字(归并排序)
字节跳动二面:
-
谈谈项目?
-
mongodb底层原理或者数据结构是什么,务处理,插入和mysq有什么区别,为什么会慢
-
如载过程(Java) ,每一步做了什么
-
子类和父类的实例变量和方法有什么区别
-
重载和覆盖区别,返回值类型不同,可以重载吗,为什么,底层如何实现的
-
java多线程,状态图,画出来,阻塞的状态有哪几种,运行顺序,多线程的一些方法
-
java泛型
-
ThreadLocal, Concurrent 下面的包,原理是什么,
-
AtomicInteger,原理是什么,如何做到高效率的,有什么优化措施
-
悲观锁和乐观锁
-
@Transaction的原理,还有比如在一个类中两个方法, -个是B方法,-个是C方法, B. 上没有注解,C上
-
有那么在外面调用B**有事务,为什么,根据底层原理能不能推断出来(给提示问你能不能推断出来)
-
查询学生成绩不及格的所有人的姓名和编号,根据这个语句,如何建立索引,为什么,
-
mysq底层是什么,为什么效率高,主键能不能太大,为什么,如果太大,底层数据结构会不会变化,为什么
-
linux查询tcp连接处理CLOSE_ WAIT的状态的数目
-
了不了解RabbitMQ, kafka, RocketMQ, ActiveMQ, 以及其他消息中间件
-
redis为什么效率高,线程,数据结构,网络模型,aio, nio, bio, 为什么这么设计?如何处理高并发
字节跳动三面:
-
数据仓库,雪花模型和星型模型区别和用处,数据仓库的过程(分层) ,如何设计
-
数据仓库和数据湖的区别
-
分布系统的设计,分布式系统CAP,分布式系统的模型
-
linux环境下的线上业务管理有没有,如何管理
-
redis的集合有没有限制,限制是多少
-
redis的1w条的插入和更新有什么区别
-
mysql join的底层原理是什么,有哪几种(不是左右连接这种)
-
linux命令查询一个文件内出现重复最多的数字的
-
linux命令查询一个文件的行数
字节跳动HR:
-
自我介绍,对公司面试的评价,实习时间
-
为什么转专业?
-
你认为你有什么优点?有什么缺点?有什么兴趣爱好?
-
在团队中习惯充当什么样的角色?
-
遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?
-
对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?
-
你还有什么想问的?
更多面经分享
======
以下面经就不具体详说,大致方向都差不多。
京东物流
====
-
java特点描述一下,继承封装多态分别是什么意思
-
synchronized和lock区别
-
ConcurrentHashMap线程安全怎么实现的
-
创建线程的几种方式,创建线程池几个参数的含义,线程饱和策略
-
sleep和wait区别
-
spring是单例还是多例,多线程并发会出现什么问题
-
SpringBoot如何解决跨域,具体怎么配置
-
全局异常捕获怎么做的
-
SpringSecurity的前后端分离,登录怎么做的 我:拦截登录的url,然后获取到用户名和密码,把这个用户名和密码交给manager,manager会交给具体的provider处理,provider会调用UserDetailsService的方法完成验证。 这里是我失误了,他说用户名和密码时通过getattribute 获取到的吗,我说是的。
-
怎么设计一个安全的对外接口
-
单线程的redis为什么这么快
-
redis持久化方式
Spring全套教学资料
Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。
目录:
部分内容:
Spring源码
- 第一部分 Spring 概述
- 第二部分 核心思想
- 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
- 第四部分 Spring IOC 高级应用
基础特性
高级特性 - 第五部分 Spring IOC源码深度剖析
设计优雅
设计模式
注意:原则、方法和技巧 - 第六部分 Spring AOP 应用
声明事务控制 - 第七部分 Spring AOP源码深度剖析
必要的笔记、必要的图、通俗易懂的语言化解知识难点
脚手框架:SpringBoot技术
它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
- SpringBoot入门
- 配置文件
- 日志
- Web开发
- Docker
- SpringBoot与数据访问
- 启动配置原理
- 自定义starter
微服务架构:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
Spring MVC
目录:
部分内容:
mg-rPdk2s1l-1715771157619)]
[外链图片转存中…(img-DaVArxid-1715771157620)]
Spring MVC
目录:
[外链图片转存中…(img-UCn8Ya1q-1715771157620)]
[外链图片转存中…(img-j8jsueNI-1715771157620)]
[外链图片转存中…(img-7blIY71J-1715771157621)]
部分内容:
[外链图片转存中…(img-Hbx8e2Tw-1715771157621)]
[外链图片转存中…(img-9lGtJty6-1715771157621)]