关于程序员,在面试中无论是顺利还是受阻,都要习惯去复盘和总结,在其中得到进步。

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。这次金九银十给我的感觉就是,不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。关于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即可

另外,我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!