300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ncs java 成都 面试_成都java工程师面试一般都是哪些问题 基础难不难!

ncs java 成都 面试_成都java工程师面试一般都是哪些问题 基础难不难!

时间:2023-06-22 15:33:50

相关推荐

ncs java 成都 面试_成都java工程师面试一般都是哪些问题 基础难不难!

了解了许多学员参加的Java面试,他们表示,面试官提出的基础性问题还是比较多。从这个突破口切入,Java新手想要成功通过面试,基础知识方面也需要准备,今天达内成都Java培训班小编就来给大家分享一些Java基础面试题!

1.java支持的数据类型有哪些?什么是自动拆装箱?

基本数据类型:

整型:byte short int long

字符型:char

浮点型:float double

布尔型:boolean

整数默认int,小数默认double,float和long必须加后缀(因为默认double,转float会损失精度,所以不会自动转,如果超过了int范围没有加L后缀,那么也会报错)

String类型属于引用类型,引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中,引用类型包括类,数组,接口等,而包装类也属于引用类型,自动装箱,拆箱就是基本类型和引用类型(此处为包装类型)间的转换,而转换为引用类型的话,就new一个对象,从而可以调用包装类型中封装好的方法,方便使用!

2.int 和 Integer 有什么区别 ?

1.int是基本数据类型,Integer的引用数据类型

2.int默认0,Integer默认null

3.int存储在栈中,Integer存储在堆中

4.int变量存储数据原始值,Integer变量存储的是引用地址

5.Integer通过实例化创建的,是对象!

3.String 和StringBuffer以及StringBuilder的区别

String 字符串常量

StringBuffer 字符串变量(线程安全)

StringBuilder 字符串变量(线程不安全)

字符串常量创建后长度,内容都不可以改变,可以new,也可以直接“abc”这样给值

字符串变量倍创建后长度,内容都是可以被修改的,只能通过new创建!

4.&和&&的区别?

&&和&都是判断两边表达式是否为真,使用&时,如果左边为假,那么它还会去验证右边,但是使用&&时,如果左边为假,它就不会验证右边了,具有短路的效果,效率比单&高!

5.你能比较一下Java和JavaSciprt吗?

java:面向对象 需要编译再进行运行 属于强类型(编译时才能确定变量类型)

javascript:基于对象和事件驱动 解释型语言 弱类型(执行时才能确定变量类型)

6.Java中是如何支持正则表达式操作的?

通过String类中的一些方法,比如matchs(),replaceAll(),replaceFirst(),split()等

7.介绍一下Synchronized锁,如果用这个关键字修饰一个静态方法,锁住什么?如果修饰成员方法,锁住什么?

Syscronized锁是同步锁,如果关键字修饰静态方法的话是一个类锁(当前类的所有线程都必须等待同步线程执行),如果关键字修饰成员方法的话是一个对象锁(当前对象的所有进程必须等待同步进程执行完,释放锁)

(静态方法:可以不用生成实例对象而直接引用)

8.介绍一下Volatile

Volatile关键字修饰共享变量,保证其他线程访问这个变量的时候始终是最新值,也就是Volatile会更新最新值到java主内存中,其他线程使用这个变量的时候会从java主内存中去取得这个变量(非volatiel不具备这个特性,非volatile变量在被某个线程修改之后会被缓存,线程A更新了这个值,线程B读取到的可能并不是最新值),volatile不具备原子性(读volatile具备原子性,但volatile变量i的i++操作不具备原子性),这是volatile与synchrozied,lock的最大差异!

9.锁有了解嘛,说一下Synchronized和lock

java为某个共享资源的同步提供了两种锁机制:Synchrozied和lock

二者有以下区别:

1.用法不一样:在需要同步的对象中加入Synchrozied锁,Synchrozied既可以加载在方法的前面也可以加载在特定的代码块中,括号表示需要锁的对象,而lock需要显示的指定起始位置和终止位置,Synchrozied是托管给JVM执行的,而lock的锁定是通过开发人员手动代码实现的

2.性能不一样:jdk5中增加了一个lock接口的实现类ReentrantLock,他们的性能在资源不同的情况下会有很大的不同:在资源竞争不是很激烈的情况下,synchorized的性能要优于ReentrantLock,但是在资源竞争很激烈的情况下,synchoorized的性能会下降很快而ReentrantLock的性能会基本保持不变

3.锁机制不一样:synchorized获得锁和释放锁的方式都在结构中,当获取多个锁时间,必须以相反的方式释放锁,并且自动解锁,不会应用出现异常而引发死锁,而Lock则需要开发人员手动释放,并且必须在final块中释放,否则会引发死锁

4.灵活性不一样:比如ABC三个线程,两个读文件一个写文件,synchorized只能依次枷锁和解锁,而lock可以让读共享,这样更好,所以后面就引发了锁优化技术

10.讲一讲Java里面的final关键字怎么用的?

被final修饰的类不能继承,被final修饰的fan方法不能重写,被final修饰的变量为常量,值不能改变

11.wait方法底层原理

object中的方法,可以暂停线程,期间会释放对象锁,不像sleep方法,线程休眠期间依然持有锁,wait方法的线程必须调用notify或notifyall方法唤醒线程

比如:当一个线程执行到wait方法时,它就进入到一个和对象相关的等待池中,同时失去对象锁,当它被一个notify方法唤醒时,等待池中的线程就被放到了锁池中,该线程从锁池获得对象锁,然后回到wait前的中断现场

12.Java有哪些特性,举个多态的例子。

封装,继承,多态,多态可以理解为一致类型,不同形态,比如Animal animal=new Dog()

13.String为啥不可变?不可变的优势在哪里?

因为String类被final修饰,string类的底层数组也是被final修饰的

1.提高字符串常量池的效率和安全,如果你知道一个对象是不可变的,那么拷贝对象的内容时就不用复制它本身而只用复制它的地址,复制地址需要很小的内存,效率也很好

2.对多线程安全,多线程的情况下,一个可变对象的值可能会被多个线程修改造成不可预期的结果,而不可变对象就不存在这个问题

14.请列举你所知道的Object类的方法。

1.clone:创建并返回此对象的一个副本

2.equals:比较“相等”

3.finalize:当垃圾回收器确定不存在该对象的引用时,由对象的垃圾回收器调用方法

4.getclass:返回它的运行时类

5.hashcode:返回对象的哈希码

6.notify:唤醒此对象监视器上等待的单个线程(随机唤醒)

7.notifyall:换线此对象监视器上等待的所有线程

8.tostring:返回对象的字符串表示

9.wait:暂停当前线程(可以设置超时时间)

15.重载和重写的区别?相同参数不同返回值能重载吗?

重写是针对父类和子类的概念,重载是针对一个类中的概念,相同参数不同返回值不可以重载,因为重载必须改变参数列表,否则虚拟机怎么知道要调用哪一个

16.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

static关键字表明一个成员变量或者成员方法可以在没有所属类的实例变量的情况下被访问

java中static方法不能被覆盖,因为方法的覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的,static方法跟类的任何实例都不相关,所以没有覆盖这个概念

java中也不可以覆盖private方法,因为private修饰的变量和方法只能在当前类中使用,任何其他类继承了该类是访问不到private变量和方法的

17.类加载机制,双亲委派模型,好处是什么?

类加载机制:JVM把类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被JVM直接使用的java类型

双亲委派模型:每次收到类的加载请求时,先将请求委派给父类加载器,如果父类加载器无法完成加载,那么子类尝试自己加载,这样使得java类随着类加载器一起具备了一种带有优先级的层次关系

18.静态变量存在哪?

static修饰的,位于全局区

19.讲讲什么是泛型?

泛型是一种参数化的类型,它的<>里面可以放任何类型,而且不需要强制类型转化,是多态的一种表现

20.解释extends 和super 泛型限定符-上界不存下界不取

extends指定上界限,只能传入本类和子类

super指定下界限,只能传入本类和父类

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。