Java的小知识点

简答题。(43分,如果不说明,那就是每个1分)

  1. JDK作用,JRE作用,这两个有什么关系

JDK是将.java文件编译成.class文件

JRE是将.class文件翻译成汇编和c(任何程序在操作系统上运行都有翻译成操作系统可识别的语言)  调度内核(语言都是汇编和c,需要保持一致)--》调度驱动

JDK中包含JRE

  1. Java语言跨平台性的解释

一次编译,处处运行(每个系统上都有jre,jre是支持多翻译的)

  1. Java语言有几种基本类型,分别是什么?

7种基本类型

分别是 byte,short ,int,long,float,char,boolean

  1. int[]类型是不是基本类型?

不是基本类型,是引用类型

  1. 什么是128陷阱?什么是装箱?什么是拆箱?为什么要有包装类?

128陷阱就是封装的对象的值的范围是-128--127,超过这个范围就会返回false

装箱就是由基本类型转换为引用类型

拆箱就是由引用类型转换为基本类型

泛型不支持基本类型

  1. 位运算有哪几种?

7种位运算  与  或  非   异或  位运算<<  >>    >>>

  1. “>>”和”>>>”的区别是什么?

>>会用符号位填充最高位,>>>是用0填充最高位

  1. String类的常用函数有哪些?列举十种。
  1. char charAt(int index) 获取指定位置的字符
  2. Int codePointAt(int index) 获取指定位置的码点
  3. Int compareTo(String other) 按字典顺序
  4. boolean equals(Object other) 比较字符串是否相等
  5. boolean equalsIgnoreCase(String other) 字符串相等,返回true
  6. Int indexOf(String str) 返回与字符串str或代码点cp匹配的第一个子串的开始位置
  7. String replace(CharSequence oldString,CharSequence newString)  替换
  8. String[] split(x) 以x为分割线进行分割
  9. Int length( ) 返回字符串长度
  10. Boolean startsWith(String suffix) 如果字符串以suffix开头,返回true

  1. String和StringBuffer,StringBuilder的区别有哪些?所有类名包含Buffer的类的内部实现原理是什么?有什么优势?(2分)

StringBuilder, StringBuffer一开始就申请了足够的空间,只需要在内部修改即可,节省了空间,

StringBuffer是加了锁的 ,多线程安全

在大量字符拼接的时候,StringBuilder, StringBuffer速度远远大于字符串

String 运行较慢,每次添加都需要重新申请一个页进行修改

Buffer的类内部实现原理:内部都是char类型数组,他会一开始就构建足够大的空间,每次更改不需要重新申请地址,这样会大大加快速度

  1. String字符串的不可变是指哪里不可变?

不可在原地址修改它的值

  1. 抽象类的作用?

只定义功能,不具体实现,由子类来实现各种功能。他的子孙后代类都必须具有他定义的功能

  1. 重载和重写的区别是什么。

重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。

重写就是指子孙后代类继承中定义一个和父类名字一样的方法

  1. equals()方法的作用是什么?重写equals需要注意哪些事项?为什么?(2分)

Bojict中的equals() :比较两个对象的物理地址是否相等

字符串中的equal():比较的是字符串是否相等

如果要重写equals方法,一定要重写hashCode方法

原因是hashmap,在使用hashmap的时候,需要两个方法结合使用

  1. Java是按值传递还是按引用传递?

值传递

  1. 描述java的类初始化顺序?如果存在继承,初始化顺序会如何(2分)

父类静态块--》子类静态块--》父类非静态---》父类构造方法---》子类非静态---》子类构造方法

静态只有第一个触发的类执行

  1. 重写和重载的区别是什么?

重载是在同一个类里,名字相同,参数列表不同

重写就是指子孙后代类继承中定义一个和父类名字一样的方法

  1. 子类构造方法调用父类构造方法的注意事项有哪些?

子类无法继承private修饰的字段

子类可继承protected修饰的字段

写super时要把它放到第一句

  1. 子类实例初始化是否触发发父类实例初始化?

触发

父类static修饰的模块--》子类static修饰的模块--》父类非静态--》父类构造方法---》子类非静态---》子类构造方法

  1. boolean类型占多少位?为什么?

32位  为了减少排队概率

  1. instanceof关键字的作用是什么?

检测instanceof左侧的对象是否是右边类的对象或者右边子孙后代类的对象

  1. 基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?

低精度转高精度不会丢失精度,不用强制。

高位转低位会丢失精度。

A类的句柄等于A类的对象或者A的子孙后代的对象

  1. 什么是枚举?详细介绍,不低于100字

枚举就是限定了对象的个数,无法新增对象,定义几个是几个

构造方法设为private ,方法也要设为private,不准有更改器

  1. 一个汉字占多少位?一个字母占多少位?

根据编码决定。

一个汉字占16位 (两个字母) 

一个字母占8位

  1. 字符串类的length()方式是否能够得到字符串内有多少个字符?为什么?

不能,因为length是获取的是代码单元,有的字符占两个代码单元(根据编码决定)

  1. “”与null的区别是什么?

“”表示一个长度为0的空字符串  null表示一个空对象

“”表示已经指向了一个内存空间,null没有

  1. 什么是代码单元?什么是码点?

在基本的多语言级别中,每个字符用 16 位表示,通常被称为代码单元

码点是指与一个编码表中的某个字符对应的代码值。

  1. switch可以选择哪些类型?什么是siwtch击穿?

char byte short int    枚举类型    字符串字面量

如果在switch语句中不写break,就会向下执行,这叫switch击穿

  1. 基本类型数组和引用类型数组的数据在物理地址上是否连接在一起?

不一定连接在一起,只有一维的基本类型数组才会连在一起

  1. 什么是深拷贝?什么是潜拷贝?
        浅拷贝就是把地址拷贝过来,两者用一个地址,一个改变另一个也变 
        深拷贝是自己创建一个新的地址把内容拷贝进来。修改自己的内容对别的没有影响。

  1. 访问器如何保障线程安全?举例说明。(3分)

把属性设置为private,在访问器中用深拷贝拷贝属性的值,用访问器访问,返回新空间的地址,不返回原来的

例如,只写了get方法,没有set方法,那么他就只能读,不能写

面试点:

  1. 抽象类和接口的不同点和相同点有哪些

  1. final关键字的作用有哪些?

final修饰常量,值不可以被第二次修改

final修饰的类不可以被继承

final修饰的方法不可以被重写

final防止多线程下的指令重排序,保障线程安全

  1. static的作用是什么?详细介绍一些

有static是静态的,在内存中会分配一定的空间来存储,可以进行调用,无static就相当于只有设计图,没有分配内存,不能进行更改,调用

  1. 类是否支持多继承?是否支持多派生?

不支持多继承  

支持多派生

  1. 解释一下什么是多态?

父类的句柄可以指向不同子孙后代类的对象

  1. 方法什么时候进线程栈,什么时候出线程栈?

方法被调用就进线程栈,调用完毕就出线程栈

  1. 方法什么是散列,举例说明?

是一种无规律的,分布相对均匀的

大小为100的数组存1万个数,每个数对100求余,按余数放到对应的位置

  1. Object类的方法有哪些?分别有什么作用?(可以百度)

2.getClass方法  获取类信息

3.toString方法  输出类信息

5.equals方法

该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

6.hashCode方法

该方法用于哈希查找,可以减少在查找中使用equals的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

如果不重写hashcode(),在HashSet中添加两个equals的对象,会将两个对象都加入进去。

7.wait方法 让线程进入全部等待,等待中cup无法选中

8.notify方法

该方法唤醒在该对象上等待的某个线程。

9.notifyAll方法

该方法唤醒在该对象上等待的所有线程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值