java知识点笔记

java面试题

81、说出几条 Java 中方法重载的最佳实践?

  • :a. 无参构造方法、有参构造方法
  • :b.System.out.println 的println的使用

82、在多线程环境下,SimpleDateFormat 是线程安全的吗?
ep:不安全,是SimpleDateFormat继承了DateFormat,而DateFormat只初始化Calendar实例被用来进行日期-时间计算,既被用于format方法也被用于parse方法,所以SimpleDateFormat并发时可能引用同个Calendar。而解决这个隐患是让每一个线程都有一个独立的SimpleDateFormat对象用于日期-时间的计算,用完清空掉。

83、Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式?
可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期

84、Java 中,怎么在格式化的日期中显示时区?
用SimpleDateFormat格式化日期的格式里+Z ,
如new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS Z”)

85、Java 中 java.util.Date 与 java.sql.Date 有什么区别?
1、java.util.Date是java.sql.Date父类;2、
java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).要保存java.util.Date的精确值,
我们需要利用java.sql.Timestamp.

86、Java 中,如何计算两个日期之间的差距?
用SimpleDateFormat计算时间差
java 8中的周期类Period的between静态方法

87、Java 中,如何将字符串 YYYYMMDD 转换为日期?
用SimpleDateFormat的parse

89、如何测试静态方法?
利用PowerMock测试静态方法

90、怎么利用 JUnit 来测试一个方法的异常?
junit的断言assertThat 使用说明看链接

91、你使用过哪个单元测试库来测试你的 Java 程序?
JUnit
92、@Before 和 @BeforeClass 有什么区别?
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
BeforeClass在类中只会被执行一次;而Before在各个方法都可以执行一次

93、怎么检查一个字符串只包含数字?
解决方案 推荐正则表达式/^[0-9]{1,20}$/

94、Java 中如何利用泛型写一个 LRU 缓存?

import java.util.LinkedHashMap;  
import java.util.Map;  
public LRUCache<K, V> extends LinkedHashMap<K, V> {      
private int cacheSize;  
  public LRUCache(int cacheSize) {  
    super(16, 0.75, true);
    this.cacheSize = cacheSize;
  }
  protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
    return size() >= cacheSize;
  }
}

95、写一段 Java 程序将 byte 转换为 long?

import java.io.DataInputStream;
DataInputStream dataInput = new DataInputStream(new ByteArrayInputStream(md5)); 
        long l1 = dataInput.readLong();

96、在不使用 StringBuffer 的前提下,怎么反转一个字符串?

public static String reverse(String str) {
    char[] chars = str.toCharArray();
    String reverse = "";
    for (int i = chars.length - 1; i >= 0; i--) {
      reverse += chars[i];
    }
    return reverse;
  }

97、Java 中,怎么获取一个文件中单词出现的最高频率?

98、如何检查出两个给定的字符串是反序的?

99、Java 中,怎么打印出一个字符串的所有排列?

100、Java 中,怎样才能打印出数组中的重复元素?
for 循环 用set来判断是否重复元素,继而打印出来

101、Java 中如何将字符串转换为整数
Integer.valueOf(str).intValue();

102、在没有使用临时变量的情况如何交换两个整数变量的值?
异或法运算符号为"^"
103、接口是什么?为什么要使用接口而不是直接使用具体类?
接口不是类,是包含类要实现的方法,让他职能更单一,严谨。

104、Java 中,抽象类与接口之间有什么不同?
1、抽象类要被子类继承extend,接口要被类实现implment
2、 接口只能做方法申明,抽象类不仅做方法申明,还支持方法实现
3、接口只能定义公共的静态的常量,抽象类支持定义普通变量;
4、他们都是抽象具体对象的,但接口的抽象级别最高
5、抽象类主要用于抽象类别 是重构的结果,接口用于抽象功能 是设计的结果

105、除了单例模式,你在生产环境中还用过什么设计模式?
工厂模式、适配器模式、

106、你能解释一下里氏替换原则吗?
子类必须实现父类的抽象方法,子类可以自己重新定义自己的方法;
107、什么情况下会违反迪米特法则?为什么会有这个问题?
类对象干了非本类定义范畴的事

108、适配器模式是什么?什么时候使用?
适配器模式是使用继承的方式连接两个接口,达到连接两个接口的桥梁作用;使用场景大多是把两个不相关联的类或对象 串联起来,串联一个已经投入生产而不想改动的接口。

109、什么是“依赖注入”和“控制反转”?为什么有人使用?
依赖注入DI:为的是解耦合,spring的DI 有三种,setter注入,构造器注入,接口注入;控制反转:是容器层面解释,由原来的获取外部对象是自己主动创建,转为容器外部控制对象实例的创建,通过依赖注入的手段达到效果;

110、抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类?
见104
111、构造器注入和 setter 依赖注入,那种方式更好?
分场景有不一样的好处,setter是设值的作用为主;构造器注入用于定义属性,属性的依赖顺序,先依赖先注入;

112、依赖注入和工程模式之间有什么不同?
解耦合不同

113、适配器模式和装饰器模式有什么区别?
装饰器模式会对引用对象做新的修改,而适配器则不需要,仅是做串联作用;
114、适配器模式和代理模式之前有什么不同?
相同点: 都为另一个对象提供间接性访问,而且都是从自身以外的接口向这个对象转发请求。
不同点:适配器模式主要是解决两个接口之间不匹配的问题,他通常是为所适配的对象提供不同的接口;而代理对象会和目标对象实现相同的接口。

115、什么是模板方法模式?
提取公共方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值