《32个Java面试必考点》学习笔记之三------设计模式与Java语言特性

设计模式与Java语言特性
知识点汇总
知识点详解
常用设计模式
单例模式
工厂模式
代理模式
责任链模式
适配器模式
观察者模式
构造者模式
Java语言特性
Java基础常考点--Map
HashMap
ConcurrentHashMap
Java版本特性
1.8
1.9-1.10
1.11
面试考察点
加分项
真题汇总
知识点汇总

该内容需掌握主要两点

常用设计模式的实现
各设计模式的使用场景


image.png

常见集合类和Java并发工具包(JUC)是常见考点


image.png

知识点详解
常用设计模式
有单例模式,工厂模式,代理模式,构造者模式,责任链模式,适配器模式,观察者模式等.

在回答设计模式问题时,可结合实际业务场景,体现对设计模式的理解和应用能力.

单例模式
线程安全实现的常见三种方法:

1. 静态初始化(饿汉).不管是否使用都会创建
2. 双检锁(懒汉).单例变量必须要用volatile修饰.
3. 单例注册表.spring中bean的单例模式就是用该方法实现.

工厂模式
在实际业务中经常用到,也是面试的主要考察点.是创建不同类型实例常用的方式.

spring中的bean都是由不同工厂类创建的.

1
代理模式
在不适合或不能直接引用另一个对象的场景,可以用代理模式对被代理的队形进行访问行为的控制.Java的代理模式分为静态代理和动态代理,静态代理是指在编译时就创建好的代理类,例如在源代码中编写的类.动态代理指在JVM运行过程中动态创建的代理类,如JDK动态代理,CDLIB,javaasist等.

例如,在Mybatis中getMapper时会通过MapperProxyFactory及配置文件动态生成的Mapper代理对象,代理对象会拦截Mapper接口的方法调用,创建对应方法的MapperMethod类并执行execute方法,然后返回结果.

1
责任链模式
类似工厂流水线,其中的每个节点完成对对象的某一种处理.

Netty框架的处理消息的Pipeline就是采用的责任链模式.

1
适配器模式
类似于转接头,将两种不匹配的对象进行适配,也可以起到对两个不同的对象进行解耦的作用.

SLF4J可使项目与Log4、logback等具体日志实现框架进行解耦,其通过不同适配器与不同框架进行适配,完成日志功能的使用.

1
观察者模式
也可称为发布订阅模式,适用于一个对象某个行为需要触发一系列操作的场景.

GRPC中stream流式请求的处理.

1
构造者模式
适用于一个对象拥有很多复杂的属性,需要根据不同情况创建不同的具体对象.

创建Protocol Buffer对象时,需要用到Builder

1
Java语言特性
集合类
主要掌握如何实现.

动态代理与反射
是java语言的特色,需要掌握动态代理与反射的使用场景.

ORM框架中会大量使用代理类,PRC调用时使用反射机制调用实现类的方法.
1
数据类型
也是面试的常见问题.如每种数据类型占用多大空间,数据类型的自动转换与强制转换,基础数据类型与Wrapper数据类型的自动装箱与拆箱等.

对象引用
(可自行搜索)

Java基础常考点–Map
能考查到数据结构,java的基础实现以及对并发问题的处理思路的掌握程度.

HashMap
通过数组加链表实现.

数组中的元素为一个链表,通过计算存入对象的hashcode,确认存入位置,用链表解决散列冲突.链表的节点存入的是键值对.
1
填充因子的作用

Map扩容的rehash机制

容量是二的幂次方.

是为了方便按位与操作计算余数,比求模更快
1
多线程风险的原因

对线程put时,会在超过填充因子的情况下rehash.HashMap为避免尾部遍历,链表插入采用头插法,多线程场景下可能产生死循环.
1
ConcurrentHashMap
分段锁思想

      1.7中采用segment分段加锁,降低并发锁定程度.

1
CAS自旋锁

     1.8中采用CAS自旋锁(一种乐观锁实现模式)提高性能.但在并发度较高时,性能一般.

1
红黑树

      1.8引入红黑树解决hash冲突时的链表查找问题.在链表长度大于8且总容量大于64时启用.扩容后链表长度小于6时重新转为一般链表.(8,6,64为默认参数)

1
Java版本特性
1.8
* Lambda表达式
* StreamAPI
* 方法引用
* 接口默认方法
* Metaspace替换PremGen
1
2
3
4
5
1.9-1.10
* 模块系统
* 默认G1回收器
* 接口私有方法
* 局部变量判断
* Graal编译器
1
2
3
4
5
1.11
* ZGC
* 字符串API增强
* 内建HTTP Client
1
2
3
面试考察点
基本概念和基本原理
要求:正确清晰

  • 网络协议4/7层模型的概念

  • TCP协议流量控制的实现原理


  • 1
    2
    3
    实现方法和使用方式

  • HashMap在JDK1.8中的实现方式

  • 单例模式有哪几种实现方式,什么场景该使用静态方法实现,什么场景该使用双检锁实现


  • 1
    2
    3
    经常用到的知识点

  • 常用的Linux命令有哪些,用来解决什么样的问题


  • 1
    2
    实际应用中容易犯错的点

  • ==与equals区别是什么

  • 对象强引用使用不当会导致内存泄露,考察不同引用方式和作用的理解


  • 1
    2
    3
    与面试方向相关的知识点

  • 中间件:存储,网络相关的考察


  • 1
    2
    加分项
    知识点与典型的业务场景关联.

如,谈到设计模型时,可以讲XX框架在解决XX问题时使用了那种设计模式.
1
以反例来描述实际场景中误用的危害.

如,大量使用反射会影响性能.
1
与知识点相关的优化点.

如,讲到tcp建连和断连时,如遇到洪水攻击或大量TIME_WAIT时,可以调整系统参数预防.
1
与知识点相关的最新技术趋势.

如,讲到ConcurrentHashMap,可以介绍1.8的改进细节.
或,讲到HTTP时,能说出HTTP2和QUIC的特点和实现.
1
2
在了解的前提下,尽量增加回答内容深度.

如,讲到tcp的滑动窗口时,能讲到流量与拥塞控制,进一步能指出解决拥塞的不同算法.
1
ps.面试官可能会顺着细节追问,回答不上来会适得其反.

真题汇总
进程和线程的区别和联系

从资源占用,切换效率,通信方式等方面解答
1
简单介绍一下进程的切换过程

线程上下文的切换代价,要回答,切换会保存寄存器,栈等线程相关的现场,需要由用户态切换到内核态,可以用vmstat命令查看线程上下文的切换状况
1
你经常使用哪些Linux命令,主要用来解决哪些问题?

参考之前操作系统汇总中提到的命令
1
为什么TCP建连需要3次握手而断连需要4次?

参考之前内容
1
为什么TCP关闭链接时需要TIME_WAIT状态,为什么要等2MSL?

参考之前内容
1
一次完整的HTTP请求过程是怎样的?

DNS解析,TCP建连,HTTP请求,HTTP响应等.
1
HTTP2和HTTP的区别有哪些?

在你的项目中你使用过那些设计模式?主要用来解决哪些问题?

Object中的equals和hashcode的作用分别是什么?

final,finally,finalize的区别与使用场景

简单表述一下Java的异常机制

先上使用的那个版本jdk,为什么使用这个版本(有什么特色)?

原文链接:https://blog.csdn.net/werqerwer/article/details/88075114

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容