java面试题汇总五

------------恢复内容开始------------

第四部分 Java SE基础

4.1设计模式和常用的设计模式

4.1.1  设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方案。

提供一个方法获取该实例对象(创建时需要进行方法同步)

工厂模式:Spring IOC就是使用的工厂模式   对象的创建交给一个工厂去创建。

代理模式:Spring AOP就是使用的动态代理。

 4.1.2  单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

一、懒汉模式:构造方法私有化,让除了自己类能创建外其他地方都不能创建

//1.非线程安全懒汉模式,
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}
//2、 线程安全懒汉模式
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static synchronized SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}

二、饿汉模式

直接在运行这个类的时候进行一次 loading,之后直接访问。显然,这种方法没有起到lazy loading 的效果,考虑到前面提到的和静态类的对比,这种方法只比静态类多了一个内存常驻而已。

在自己的类中创建一个单实例(饱汉模式是一出来就创建单实例,而饥汉模式是需要的时候才创建)

public class SingletonDemo {
private static SingletonDemo instance=new SingletonDemo();
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
return instance;
}
}

4.1.3 设计模式六大原则

1. 单一职责原则(Single Responsibility Principle, SRP) :一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

2. 开闭原则(Open-Closed Principle, OCP): : 一个软件实体应当对扩展开放 , 对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

3. 里氏代换原则(Liskov Substitution Principle, LSP) :所有引用基类(父类)的地方必须能透明地使用其子类的对象。

4. 依赖倒转原则(Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程

5. 接口隔离原则(Interface Segregation Principle, ISP) :使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

6. 迪米特法则(Law of Demeter, LoD) :一个软件实体应当尽可能少地与其他实体发生相互作

-----------------------------------------------------------------------------------我是分割线---------------------------------------------把所有的春天都揉进一个清晨----------------------------------------------------------------------------

 

------------恢复内容结束------------

原文地址:https://www.cnblogs.com/creative-work/p/12499698.html

时间: 2024-11-07 23:19:56

java面试题汇总五的相关文章

各大互联网Java面试题汇总,最后我成功拿到百度的offer

从事Java开发也有5年经验了,7月初来到帝都,开启面试经历,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其中包括奇虎360,最后综合决定还是去百度了. 首先不同面试官面试风格一定不同,我这里就是总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程,网络通信,数据库以及设计模式,算法,等几个模块,由于问题太多,下面先列出问题,之后有时间在写文章解答,或者网上有很多答案,可以自行搜索.关于专业技能 写完项目接着写写一

20个高级Java面试题汇总

北京尚学堂提供 这是一个高级Java面试系列题中的第一部分.这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题. 1.        什么是可变参数? 2.        断言的用途? 3.        什么时候使用断言? 4.        什么是垃圾回收? 5.        用一个例子解释垃圾回收? 6.        什么时候运行垃圾回收? 7.        垃圾回收的最佳做法? 8.        什么是初始化数据块? 9.        什么

Java面试题汇总

最近面试了比较多的Java研发岗,感觉自己对Java的学习还不够深刻,于是利用周末恶补了一下,也为下星期的三个面试做下准备. RPC的暂时搁置一下. 下面是自己感觉比较常考的题目. Spring 原理 java跨平台原理 hashCode和equals HashTable和HashMap.arrayList和vector.ArrayList& LinkedList的区别 Java基本类型有哪些(第一轮面试时面试官非常喜欢问的一个问题,因为第一轮面试的面试官往往不太懂技术) 作用域public,p

[转]20个高级Java面试题汇总

http://saebbs.com/forum.php?mod=viewthread&tid=37567&page=1&extra= 这是一个高级Java面试系列题中的第一部分.这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题. 程序员面试指南:https://www.youtube.com/watch?v=0xcgzUdTO5M Java面试问题集合指南:https://www.youtube.com/watch?v=GnR4hCvEIJQ

阿里历年经典Java面试题汇总

Volatile的特征: A.禁止指令重排(有例外) B.可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存. 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量. Volatile的重排序 1.当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写或者volatile读写),都不能进行重排序.这个规则确保volatile写之前的所有操作都不会被重排序到

Java面试题(五)线程及集合补充

1,一个进程就是一个应用程序.一个线程就是一个进程中运行的最小单元.  一个进程可以包括多线程. 餐馆(进程). 主线程. 服务员(线程) 服务员(线程) 服务员(线程) 服务员(线程) 加塞,让步,守护,睡觉,打断,设置优先级.. 2,线程的生命周期?新建,就绪,运行,阻塞,死亡 3,线程创建有几种方式?答:三种.extends Thread,implements Runnable,线程池. 继承是否要满足一种关系?is-a关系?子类 is a 父类. 4,不同线程创建对应的start方法. 

java面试题汇总,不断更新中。。。

JVM,并发,锁相关: 1.请你谈谈对volatile的理解,volatile是否存在伪共享问题. 2.cas你知道吗? 3.原子类AtomicInteger的ABA问题谈谈?原子更新引用知道吗? 4.公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁. 5.CountDownLatch.CyclicBarrier.Semaphore使用过吗? 6.阻塞队列知道吗? 7.死锁编码及定位分析? 8.java中的逃逸分析了解吗? 9.synchronized的原理,你了解锁膨胀

java 面试题汇总(未完结)

Java高频面试题汇总--Java职场范儿

经历了两周的面试,终于收到了几个满意的offer.换工作的过程是痛苦的,除了一天马不停蹄地跑好几家公司面试,剩下的时间基本就是背面试题了.想找到一份适合自己的面试题并不简单,比如我找的是高级Java开发的职位.出于之前公司系统架构的设计,需要准备Java.spring.springboot.mysql.mybatis.mycat.zookeeper.dubbo.kafka.redis.网络等面试题.我结合之前面试的20多家公司,以及从CSDN/简书/掘金/公众号等相关渠道搜集到的面试题,从中整理