Java 面试都只是背答案吗?

其实java面试还是需要背答案的,如果你不背诵Java面试问题的答案,面试很大几率会挂!java面试题就像我们高考中的文言文,包括古诗词。不背诵是不可能回答出来的!当然,除了背诵,你还得理解,否则对面试后的工作没什么意义,也没什么帮助!

所以今天先给大家整理一部分Java面试题大全,希望对大家有帮助哈~

1. 什么是编程

编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

2. 什么是java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

3.JDK 和 JRE 有什么区别?

(1) JDK是java的开发工具包,有JDK8,9甚至到14的差别,安装以后,不仅包含了java 的开发环境,比如java.exe,还包含了运行环境(jre)相关包。

(2)JRE是java 运行环境,一般装好JDK后,系统里会有对应的JRE环境。

4. 说下你对== 和 equals 的认识,它们有什么差别?

对于==

基本类型,比如int等,==比较的是值是否相同;

引用类型,比如自定义对象:比较地址是否相同;

尤其地,对常量,由于常量被放在常量池里管理,所以对String等常量,==也是比较值

对于equals 方法

对于String,ArrayList等,equals方法是比较值;

但在Object里,equals还是比较地址;

如果自己创建了一个类,但没有重写equals方法,还是会比较地址

5.Java语言有哪些特点

(1)简单易学(Java语言的语法与C语言和C++语言很接近)

(2)面向对象(封装,继承,多态)

(3)平台无关性(Java虚拟机实现平台无关性)

(4)支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

(5)支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

(6)健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

(7)安全性

6.如果两个对象的 hashCode值一样,则它们用equals()比较也是为 true,是不是?

答案: 不是

hashCode是定义在HashMap里,用以快速索引;

Object里,hashCode和equals是两个不同的方法,默认hashCode是返回对象地址,equals方法也是对比地址;

两者不是一回事,可以通过重写对象的hashCode方法,让不同值的对象有相同的hashCode,但它们的equals方法未必相同

7. Java应用程序与小程序之间有那些差别?

简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟flash的小游戏类似。

8.综合说下final的作用

(1)修饰在类上,该类不能被继承。

(2)修饰在方法上,该方法不能被重写。

(3)修饰在变量上,叫常量,该常量必须初始化,初始化之后值就不能被修改,而常量一般全都是用大写来命名。

9. Java和C++的区别

我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来!

都是面向对象的语言,都支持封装、继承和多态

Java不提供指针来直接访问内存,程序内存更加安全

Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。

Java有自动内存管理机制,不需要程序员手动释放无用内存

10抽象类能使用 final 修饰吗?

首先说明,语法上不能,然后再进一步从面向对象思想角度来说明。

定义抽象类的本意是,让其它类继承的,从而进一步完善对象。如果定义为 final 该类就不能被继承,这样就会有矛盾,所以 final 不能修饰抽象类。

11. 面向对象概述

面向对象和面向过程的区别

面向过程:

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展

面向对象:

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护

缺点:性能比面向过程低

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。

12 面向对象三大特性

1、封装(Encapsulation)

封转是指属性私有化

根据需要提供setter和getter方法来访问属性

隐藏具体属性和实现细节,仅对外开放接口

控制程序中属性的访问级别

目的:增强数据安全性,不能让其他用户随意访问和修改数据,简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员

2、继承(Extend)

继承是指将多个相同的属性和方法提取出来,新建一个父类

java中一个类只能继承一个父类,且只能继承访问权限非private属性和方法

子类可以重写父类中的方法,命名与父类中同名的属性

目的:代码复用

3、多态

多态(Polymiorph)可以分为两种:设计时多态、运行时多态

设计(编译)时多态:即重载(Overload),是指java允许方法名相同而参数不同(返回值可以相同也可以不同),同一个类中允许存在一个或多个以上的同名函数,只要参数类型或参数个数不同即可

运行时多态:即重写(Override)必须是在继承体系中,子类重写父类方法,JVM运行时根据调用该方法的类型决定调用那个方法

13.面向对象的五大原则

单一职责原则:一个类,最好只做一件事,只有一个引起它变化。每个类应该实现单一的职责,如果不是,那就把类拆分

开放封闭原则:对扩展开放,对修改封闭

里氏替换原则:子类必须能够替换其基类,里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现

依赖倒置原则:依赖于抽象接口,不要依赖于具体实现,简单来说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户于与实现模块间的耦合

接口隔离原则:使用多个小的专门接口,而不是使用一个大的接口

14.成员变量与局部变量的区别有哪些

变量:在程序执行的过程中,在某个范围内其值可以发生改变的量。从本质上讲,变量其实是内存中的一小块区域

成员变量:方法外部,类内部定义的变量

局部变量:类的方法中的变量。

成员变量和局部变量的区别

Java 面试都只是背答案吗?_第1张图片

15.java 的集合容器都有哪些?

如下给出了大致的结构

(1)所有线性表对象的父类是Collection

(2)有线性表类,比如ArrayList和Set等。

(3)有键值对类,比如HashMap。

Java 面试都只是背答案吗?_第2张图片

16. Collection 和 Collections 有什么区别?

(1)Collection 是一个集合接口,是所有线性表对象的父类。

(2)Collections是集合类的一个工具类,包含了对集合元素进行排序和线程安全等各种操作方法

17. Files的常用方法都有哪些?

Files. exists():检测文件路径是否存在。

Files. createFile():创建文件。

Files. createDirectory():创建文件夹。

Files. delete():删除一个文件或目录。

Files. copy():复制文件。

Files. move():移动文件。

Files. size():查看文件个数。

Files. read():读取文件。

Files. write():写入文件。

18. 什么是反射机制?

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

19.静态编译和动态编译

**静态编译:**在编译时确定类型,绑定对象

**动态编译:**运行时确定类型,绑定对象

20. 反射机制优缺点

· 优点: 运行期类型的判断,动态加载类,提高代码灵活度。

· 缺点: 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多。

21. HashSet 的实现原理?

(1)HashSet在底层上,是由HashMap实现的

(2)HashSet的值放在HashMap的key上

(3)HashMap的value统一为PRESENT

22.ArrayList 和 LinkedList 的区别是什么?

ArrrayList底层实现的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构是双向循环链表,不支持随机访问。

这只是总结面试题的一小部分,如果有兴趣的话可以关注我,后续我会一一更新,当然打铁还需自身硬,当然我们不知要会背住这些,还要强化我们的专业知识,这样才可以在面试中拔得头筹。

JAVA程序员尽然需要掌握这些框架!

Java300集零基础适合初学者视频教程_

这些框架知识与基础知识也是相对比较重要的,希望大家可以多多复习,最后祝愿大家都可以找都好的工作!!

你可能感兴趣的:(java,java)