概述
简答题。(43分,如果不说明,那就是每个1分)
- JDK作用,JRE作用,这两个有什么关系
JDK是将.java文件编译成.class文件
JRE是将.class文件翻译成汇编和c(任何程序在操作系统上运行都有翻译成操作系统可识别的语言) 调度内核(语言都是汇编和c,需要保持一致)--》调度驱动
JDK中包含JRE
- Java语言跨平台性的解释
一次编译,处处运行(每个系统上都有jre,jre是支持多翻译的)
- Java语言有几种基本类型,分别是什么?
7种基本类型
分别是 byte,short ,int,long,float,char,boolean
- int[]类型是不是基本类型?
不是基本类型,是引用类型
- 什么是128陷阱?什么是装箱?什么是拆箱?为什么要有包装类?
128陷阱就是封装的对象的值的范围是-128--127,超过这个范围就会返回false
装箱就是由基本类型转换为引用类型
拆箱就是由引用类型转换为基本类型
泛型不支持基本类型
- 位运算有哪几种?
7种位运算 与 或 非 异或 位运算<< >> >>>
- “>>”和”>>>”的区别是什么?
>>会用符号位填充最高位,>>>是用0填充最高位
- String类的常用函数有哪些?列举十种。
- char charAt(int index) 获取指定位置的字符
- Int codePointAt(int index) 获取指定位置的码点
- Int compareTo(String other) 按字典顺序
- boolean equals(Object other) 比较字符串是否相等
- boolean equalsIgnoreCase(String other) 字符串相等,返回true
- Int indexOf(String str) 返回与字符串str或代码点cp匹配的第一个子串的开始位置
- String replace(CharSequence oldString,CharSequence newString) 替换
- String[] split(x) 以x为分割线进行分割
- Int length( ) 返回字符串长度
- Boolean startsWith(String suffix) 如果字符串以suffix开头,返回true
- String和StringBuffer,StringBuilder的区别有哪些?所有类名包含Buffer的类的内部实现原理是什么?有什么优势?(2分)
StringBuilder, StringBuffer一开始就申请了足够的空间,只需要在内部修改即可,节省了空间,
StringBuffer是加了锁的 ,多线程安全
在大量字符拼接的时候,StringBuilder, StringBuffer速度远远大于字符串
String 运行较慢,每次添加都需要重新申请一个页进行修改
Buffer的类内部实现原理:内部都是char类型数组,他会一开始就构建足够大的空间,每次更改不需要重新申请地址,这样会大大加快速度
- String字符串的不可变是指哪里不可变?
不可在原地址修改它的值
- 抽象类的作用?
只定义功能,不具体实现,由子类来实现各种功能。他的子孙后代类都必须具有他定义的功能
- 重载和重写的区别是什么。
重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
重写就是指子孙后代类继承中定义一个和父类名字一样的方法
- equals()方法的作用是什么?重写equals需要注意哪些事项?为什么?(2分)
Bojict中的equals() :比较两个对象的物理地址是否相等
字符串中的equal():比较的是字符串是否相等
如果要重写equals方法,一定要重写hashCode方法
原因是hashmap,在使用hashmap的时候,需要两个方法结合使用
- Java是按值传递还是按引用传递?
值传递
- 描述java的类初始化顺序?如果存在继承,初始化顺序会如何(2分)
父类静态块--》子类静态块--》父类非静态---》父类构造方法---》子类非静态---》子类构造方法
静态只有第一个触发的类执行
- 重写和重载的区别是什么?
重载是在同一个类里,名字相同,参数列表不同
重写就是指子孙后代类继承中定义一个和父类名字一样的方法
- 子类构造方法调用父类构造方法的注意事项有哪些?
子类无法继承private修饰的字段
子类可继承protected修饰的字段
写super时要把它放到第一句
- 子类实例初始化是否触发发父类实例初始化?
触发
父类static修饰的模块--》子类static修饰的模块--》父类非静态--》父类构造方法---》子类非静态---》子类构造方法
- boolean类型占多少位?为什么?
32位 为了减少排队概率
- instanceof关键字的作用是什么?
检测instanceof左侧的对象是否是右边类的对象或者右边子孙后代类的对象
- 基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?
低精度转高精度不会丢失精度,不用强制。
高位转低位会丢失精度。
A类的句柄等于A类的对象或者A的子孙后代的对象
- 什么是枚举?详细介绍,不低于100字
枚举就是限定了对象的个数,无法新增对象,定义几个是几个
构造方法设为private ,方法也要设为private,不准有更改器
- 一个汉字占多少位?一个字母占多少位?
根据编码决定。
一个汉字占16位 (两个字母)
一个字母占8位
- 字符串类的length()方式是否能够得到字符串内有多少个字符?为什么?
不能,因为length是获取的是代码单元,有的字符占两个代码单元(根据编码决定)
- “”与null的区别是什么?
“”表示一个长度为0的空字符串 null表示一个空对象
“”表示已经指向了一个内存空间,null没有
- 什么是代码单元?什么是码点?
在基本的多语言级别中,每个字符用 16 位表示,通常被称为代码单元
码点是指与一个编码表中的某个字符对应的代码值。
- switch可以选择哪些类型?什么是siwtch击穿?
char byte short int 枚举类型 字符串字面量
如果在switch语句中不写break,就会向下执行,这叫switch击穿
- 基本类型数组和引用类型数组的数据在物理地址上是否连接在一起?
不一定连接在一起,只有一维的基本类型数组才会连在一起
- 什么是深拷贝?什么是潜拷贝?
浅拷贝就是把地址拷贝过来,两者用一个地址,一个改变另一个也变
深拷贝是自己创建一个新的地址把内容拷贝进来。修改自己的内容对别的没有影响。
- 访问器如何保障线程安全?举例说明。(3分)
把属性设置为private,在访问器中用深拷贝拷贝属性的值,用访问器访问,返回新空间的地址,不返回原来的
例如,只写了get方法,没有set方法,那么他就只能读,不能写
面试点:
- 抽象类和接口的不同点和相同点有哪些?
- final关键字的作用有哪些?
final修饰常量,值不可以被第二次修改
final修饰的类不可以被继承
final修饰的方法不可以被重写
final防止多线程下的指令重排序,保障线程安全
- static的作用是什么?详细介绍一些
有static是静态的,在内存中会分配一定的空间来存储,可以进行调用,无static就相当于只有设计图,没有分配内存,不能进行更改,调用
- 类是否支持多继承?是否支持多派生?
不支持多继承
支持多派生
- 解释一下什么是多态?
父类的句柄可以指向不同子孙后代类的对象
- 方法什么时候进线程栈,什么时候出线程栈?
方法被调用就进线程栈,调用完毕就出线程栈
- 方法什么是散列,举例说明?
是一种无规律的,分布相对均匀的
大小为100的数组存1万个数,每个数对100求余,按余数放到对应的位置
- 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方法
该方法唤醒在该对象上等待的所有线程。
最后
以上就是悲凉小兔子为你收集整理的Java的小知识点的全部内容,希望文章能够帮你解决Java的小知识点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复