往期链接
【已加精】【求职准备专题】第一弹:备战秋招即刻出发
感谢牛客网又上榜了
写在最前面吧
这是一个纯 从自身经历和能力出发的个人分析案列
不具备普适性
个人标签
大三 - 2022届 - 双非本科 - Java后端开发
还有大家问的 最多的我文章里用的工具 xmind+滴答清单
【秋招备战计划第二弹】最后俩月能提升的知识清单
又是一个 比较庸俗的标题做开头
这一期 分享一下 秋招要准备的必备知识点
当然 仅仅是站在我自己 春招的面试经验上 得知的
看看自己哪里还有疏漏的 可以尽快 找补 搏一搏单车变摩托
本来今天早上 七点到公司想简单分享下 结果 用了一个半小时 梳理了一下知识点 感觉也不少啊
很多知识 都没有写 值罗列了 我认为 高频的 面试中问过我的
后面我应该 周末会整理一下 出一个 更精简 更高效的导图 和 讲解
应该 也会出一个 更精细 更全方面的 的知识点分析
笔试
选择
- Linux
- 操作系统
- 计算机网络
- 数据库
- Java相关
- 算法
简答
- 其实和面试准备一样
- 考过的
编程题
LeetCode HOT 100
牛客题霸
- https://www.nowcoder.com/activity/oj?tab=0
- 上周考过
- 研发最爱考
- 高频TOP200
行测 性格测试
- 我也不会 有行测的我都挂了
面试
手撕代码相关
手撕算法
上周考过
- 里面的真的会考 看看不吃亏
简单必考型写不上来必挂
- 反转链表
- 快速排序变种
- 双指针判断链表成环
动态规划
- 只有手撕两题的时间考动规最能展示一个人的实力
手撕SQL
牛客在线SQL编程 80题
手撕设计模式
单例模式跑不了
懒汉单例
饿汉单例
线程安全
- 加锁
- 双重判空检测
- volatile 防止重排序
防止反射破坏
- 枚举类
手撕多线程
简单的 ABAB 交替运行
- Thread
- runable
- java8的 lambda表达式和stream流
多线程银行存取钱demo
八股核心技术
Java核心技术
Java基础
- 面向对象三特性
- 不要搞混 覆盖 重载 多态
- JDK JRE JVM 都是啥
- 抽象类与接口
- 注解与反射
- 异常与错误
- 值传递与引用
三大集合
list
- 链表
- 数组
map
HashMap
JDK1.7与1.8区别
- 链表红黑树
- 头插法尾插法
HashMap 与 ConcurrentHashMap
- 线程安全问题
set
三大集合的实现类
多线程
- 线程与进程
- 线程的状态
- 线程池 阻塞队列
JVM相关
内存回收
- 回收策略
- 回收算法垃圾收集器
类加载机制
- classloader
- Class.forname
Spirng框架相关
IOC 和 AOP
常用注解
- @Autowired
- @Resource
- @Controller
- @Service
- @Repository
- @Component
Spring的优点
- 依赖注入 IOC控制反转
- AOP面向切面编程
AOP实现
- JDK动态代里
- cglib
IOC容器初始化过程
Bean的生命周期
SpirngMVC
- MVC框架
- MVC的消息处理流程
SpirngBoot
自动配置
核心注解
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @SpringBootApplication
- @ComponentScan
mybatis
连接MySQL数据库
JDBC、MyBatis和Hibernate
四大核心组件
动态SQL
和 $
接口绑定
- 注解绑定
- xml映射文件
缓存机制
网络相关
浏览器中输入一个网址如 hanxu51.cn
- DNS域名解析
- TCP三次握手
- HTTP请求
- 路由器转发
- 服务器处理请求
- 浏览器解析渲染
OSI七层协议模型
- 应用层->表示层->会话层->传输层->网络层->数据链路层->物理层
TCP/IP协议
- 应用层-》传输层-》网络层-》链路层
应用层
http
HTTP Code 响应码
2XX
- 成功
3XX
- 重定向
4XX
- 请求错误
5XX
- 服务器错误
https
- HTTP和HTTPS的区别
- SSL协议
cookie和session
传输层
tcp 和 udp
tcp
三次握手以及四次挥手
- 滑动窗口
拥塞避免算法
- 慢启动+拥塞避免
- 快重传+快恢复
应用场景
TCP和UDP协议的区别
socket相关
子网掩码的求法
安全相关
XSS跨站脚本攻击
CSRF跨站请求伪造
SQL注入
- 预编译语句
- 存储过程
- 数据类型检查
数据库相关
数据库理论
结构化SQL数据库
MySQL
MySQL索引
- 最左前缀匹配
- 聚簇索引和非聚簇索引
- B树、B+树、红黑树
常用存储引擎
InnoDB 默认
MyISAM
- MyISAM表不支持事务、不支持行级锁、不支持外键
MySQL日志模块
- binlog
- redo log
事务与隔离级别
事务特性
- 原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;
- 一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态;
- 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;
- 持久性(Durability):一个事务一旦提交,对数据库的修改应该永久保存
并发问题
- 丢失更新
- 脏读
- 不可重复读
- 幻影读
隔离级别
- 读未提交(Read Uncommitted)
- 读已提交(Read Committed)
- 可重复读(Repeatable Read)
- 序列化(Serializable)
MySQL的锁机制
表级锁和行级锁
独占锁和共享锁
悲观锁与乐观锁
乐观锁的CAS
乐观锁的ABA
- 基于数据版本(Version)记录机制解决
死锁
死锁解决
业务逻辑
- 指定锁的获取顺序
- 大事务拆分成各个小事务
- 在同一个事务中,一次锁定尽量多的资源,减少死锁概率
- 给表建立合适的索引以及降低事务的隔离级别等
数据库配置
- 超时时间innodb_lock_wait_timeout
- 死锁检测主动回滚
SQL优化,线上故障排查
- explain
- 开启慢查询日志
建表约束
- 主键约束(Primay Key Coustraint) 唯一性,非空性
- 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
- 检查约束 (Check Counstraint) 对该列数据的范围、格式的限制
- 默认约束 (Default Counstraint) 该数据的默认值
- 外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列
MVCC多版本并发控制
非结构化noSQL数据库
Redis
介绍
- 高性能的(key/value)分布式内存数据库
- 基于内存运行并支持持久化的NoSQL数据库
- 支持丰富的数据类型
丰富的数据类型
五种基本数据类型
- string:redis 中字符串 value 最大可为512M。可以用来做一些计数功能的缓存(也是实际工作中最常见的)。
- list:简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边),其底层实现是一个链表。可以实现一个简单消息队列功能,做基于redis的分页功能等。
- set:是一个字符串类型的无序集合。可以用来进行全局去重等。
- sorted set:是一个字符串类型的有序集合,给每一个元素一个固定的分数score来保持顺序。可以用来做排行榜应用或者进行范围查找等。
- hash:键值对集合,是一个字符串类型的 Key和 Value 的映射表,也就是说其存储的Value是一个键值对(Key- Value)。可以用来存放一些具有特定结构的信息。
三种特殊数据类型
底层数据结构
- 简单动态字符串,链表,字典,跳表,整数集合以及压缩列表
redis是单线程(狭义)
单线程是指网络请求模块使用了一个线程
- 基于内存实现,完全内存计算
- 单线程操作,避免了线程上下文切换操作
- 多路I/O复用的线程模型,实现了一个线程监控多个IO流,及时响应请求
- redis对外部的依赖比较少,属于轻量级内存数据库
复合操作来说,还是需要锁的,而且有可能是分布式锁
IO多路复用
四大问题
缓存雪崩
- 海量数据
缓存击穿
- 热点数据过期
缓存穿透
- 查询没有的数据
一致性问题
- 双删延时的解决办法
- 更新数据库产生的binlog订阅(使用canal)
持久化方式
- RDB(快照方式 snapshotting)(全量持久化)
- AOF(append-only-file)(增量持久化)
- 持久化策略选择
数据的过期回收策略与内存淘汰机制
主从复制机制
- 哨兵
分布式系统CAP思想
- C:Consistent 一致性
- A:Availability 可用性
- P:Partition tolerance 分区容忍度
- 网络分区:分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的风险,网络断开也就意味着发生了网络分区。
- 最终一致性:Redis可以保证最终一致性,从节点会努力追赶主节点,最终从节点的状态会和主节点的状态将保持一致。
事务
- 隔离性不中断
- 事务内命令序列化
操作系统相关
操作系统基础知识
- 内存管理
- 多线程相关
Linux命令相关
基础
- ls,cat,vim,cp,mv
查看
- grep,awk,top,ps,sed,sort,tail,head
其他命令行工具
- maven相关
- git相关
框架相关
- springboot
- mybatis
系统设计
设计模式
- 工厂
- 单例
- 动态代理
分布式
缓存
消息队列
具体应用
- 红包
- 秒杀
- 扫码登录
- 短网址
项目经历相关
- Java 的就往 springboot 服务端和web框架这里靠 尽量别整 swing 啥的
- 通过项目会扯向前面准备的基础知识 而且会引导面试官 向自己会的方向 问
推荐几个 专栏 和 书籍
name url 备注 Java 全栈知识体系 https://www.pdai.tech/ 太全了 无广告 特别爽 CS-Notes http://www.cyc2018.xyz/ 八百多页 我把他的pdf打印下来了 寒假看完了 提升了很多 能力呢 某课时间的 《数据结构与算法之美》 https://time.geekbang.org/column/intro/100017301 压箱底的课程 这个平台top3的课程果然和很厉害 某课网程序员的梦工厂《剑指Java面试-offer直通车》 https://coding.imooc.com/class/303.html 倍速看9小时的课程 我在面试前一天刷了一晚上 刚好第二天全问到了 《MySQL 必知必会》 某多多19.9包邮两本还带上 《SQL必知必会》不知道买贵了没有 SQL语句入门必备 《大型网站技术架构》 淘宝二手买的正版用券3块钱包邮 但是活动没了 不放链接了 十分建议新手看这个书籍 缓存集群都讲了很简单 面试吹B必备 牛客专栏 Java工程师 求职经验分享 https://www.nowcoder.com/tutorial/10056/index 和CS-Notes是同一个作者 都是大佬CYC2018 相当于是 CS-NOTES的校招精简版 我是一起结合食用的 牛客专栏《Java开发岗高频面试题》 https://www.nowcoder.com/tutorial/10014/a41e7c7a0e3c4efd926d0462dfd66429 大二的时候买的 当时啥也不懂但是帮助很大很精简 当时价格也很美丽 现在不知道卖多少 牛客春招集训营 https://www.nowcoder.com/courses/cover/live/537?coupon=ABhTpQy 推广链接可以减一百 199还是二百多 我忘了 课程是秒杀项目系统+25w字的真题宝典 +简历指导+模拟面试 这个课对于春招小白的我帮助很大 牛客秋招集训营 https://www.nowcoder.com/courses/cover/live/635?coupon=AEiaEdP 推广链接可以减一百 还没开课但是我买了这个价格是春招集训营的两倍 应该 但是秋招的应该在春招营基础上有纸质学习资料 + 基础知识直播讲解 出于对牛客品质的信任 我出了课就买了 B站UP狂神说Java https://space.bilibili.com/95256449?from=search&seid=11148783367271672086 挺厉害的谁看谁知道 B站up不高兴就喝水 https://space.bilibili.com/412704776?from=search&seid=11148783367271672086 我见过最走心的程序员UP说的都是大实话
其他的我再补充吧 写了两个多小时七点写到九点多了 我要去吃早饭了
最后说一下 资料准备的多与少 根本不重要 而是看自己学了多少 学的多学的少 消化了 才是自己的
之前在学校社团的时候 自己整理了一些资源分享汇总
大家感兴趣的话后面有空可以 专门拉一个博客分享一下
CS-Notes 我看的最多
全部评论
(15) 回帖