关于程序员,在面试中无论是顺利还是受阻,都要习惯去复盘和总结,在其中得到进步。
不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。这次金九银十给我的感觉就是,不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。关于Java面试的常问知识点,应该包括:Java基础、计算机网络、Linux、MySQL、Redis、Spring、消息队列、Dubbo、数据结构、算法等,以及场景面试。
目录
这份2020面试文档总计13大专题124页,为了不影响大家的阅读体验,这里就不一一例举出来了,完整版的文档有需要的朋友帮忙转发文章,关注我添加下方图中VX即可
Java
Java基础知识
- 重载和重写的区别
- String和StringBuffer. StringBuilder 的区别是什么? String 为什么是不可变的?
- 自动装箱与拆箱
- ==与equals
- 关于final 关键字的一些总结
- Object类的常见方法总结
- Java中的异常处理
- 获取用键盘输入常用的的两种方法
- 接口和抽象类的区别是什么
Java集合框架
- Arraylist与LinkedList异同
- ArrayList与Vector区别
- HashMap的底层实现
- HashMap和Hashtable的区别
- HashMap的长度为什么是2的幕次方
- HashMap多线程操作导致死循环问题
- HashSet和HashMap区别
- ConcurrentHashMap和Hashtable的区别
- ConcurrentHashMap线程安全的具体实现方式/底层具体实现
- 集合框架底层数据结构总结
Java多线程
- 面试中关于synchronized关键字的5连击
- 面试中关于线程池的4连击
- 面试中关于线程池的2连击
- 面试中关于Atomic原子类的4连击
- AQS
Java虚拟机
设计模式
计算机网络
TCP、UDP协议的区别
在浏览器中输入url地址->>显示主页的过程
各种协议与HTTP协议之间的关系
HTTP长连接、短连接
TCP三次握手和四次挥手(面试常客)
Linux
简单介绍一下Linux文件系统?
一些常见的Linux命令了解吗?
MySQL
说说自己对于MySQL常见的两种存储引擎: MyISAM与InnoDB的理解
数据库索引了解吗?
当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:
事务隔离级别(图文详解)
Redis
简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
- redis简介
- 为什么要用redis/为什么要用缓存
- 为什么要用redis而不用map/guava做缓存?
- redis和memcached的区别
- redis常见数据结构以及使用场景分析
- redis设置过期时间
- redis内存淘汰机制(MySQL里有 2000w数据,Redis中只存20w的数据,
- redis持久化机制(怎么保证redis 挂掉之后再重启数据可以进行恢复)
- redis事务
- 缓存雪崩和缓存穿透问题解决方案
- 如何解决Redis的并发竞争Key问题
- 如何保证缓存与数据库双写时的数据一致性?
Spring
Spring一般是不可避免的,如果你的简历上注明了你会Spring Boot或者Spring Cloud的话,那么面试官也可能会同时问你这两个技术,比如他可能会问你springboot和spring的区别。 所以,一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。
另外,AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己怎么实现一个IOC容器? 这些东西都是经常会被问到的。
- Spring Bean的作用域
- Spring事务中的隔离级别
- Spring务中的事务传播行为
- AOP
- IOC
消息队列
“RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。
- 什么是消息队列
- 为什么要用消息队列
- 使用消息队列带来的一些问题
- JMS VS AMQP
- 常见的消息队列对比
Dubbo
Dubbo 是由阿里开源的,后来加入了 Apache 。正是由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。
- 重要的概念.
- Dubbo的架构
- Dubbo的负载均衡策略
- zookeeper宕机与dubbo直连的情况
数据结构
数据结构比较常问的就是:二叉树、红黑树(很可能让你手绘一个红黑树出来哦!)、二叉查找树(BST)、平衡二叉树(Self-balancing binary search tree)、B-树,B+树与B*树的优缺点比较、 LSM 树这些知识点。
数据结构很重要,而且学起来也相对要难一些。建议学习数据结构一定要循序渐进地来,一步一个脚印地走好。一定要搞懂原理,最好自己能用代码实现一遍。
- Queue
- Set
- List
- Map
- 树
- 图
- BFS及DFS
算法
常见的加密算法、排序算法都需要自己提前了解一下,排序算法最好自己能够独立手写出来。
我觉得面试中最刺激、最有压力或者说最有挑战的一个环节就是手撕算法了。面试中大部分算法题目都是来自于Leetcode、剑指offer上面,建议大家可以每天挤出一点时间刷一下算法题。
算法面试笔记总计184页,需要这份文档关注后添加VX:Mxy98811即可
实际场景题
我觉得实际场景题就是对你的知识运用能力以及思维能力的考察。建议大家在平时养成多思考问题的习惯,这样面试的时候碰到这样的问题就不至于慌了。另外,如果自己实在不会就给面试官委婉地说一下,面试官可能会给你提醒一下。切忌不懂装懂,乱答一气。 面试官可能会问你类似这样的问题:
- ①假设你要做一个银行app,有可能碰到多个人同时向一个账户打钱的情况,有可能碰到什么问题,如何解决(锁)
- ②你是怎么保证你的代码质量和正确性的?
- ③下单过程中是下订单减库存还是付款减库存,分析一下两者的优劣;
- ④同时给10万个人发工资,怎么样设计并发方案,能确保在1分钟内全部发完。
- ⑤如果让你设计xxx系统的话,你会如何设计。
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的朋友帮忙转发文章,关注我扫码添加下方图中VX即可
另外,我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!