java面试基础知识分享

金凤1871分享

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。下面是小编为大家整理的java面试基础知识,希望能对大家有所帮助。

java面试基础知识分享

java面试基础知识

1、静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量是属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配内存空间,才可以使用这个实例变量。

静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会分配内存空间,而且只分配一次,静态变量就可以被使用了。总之,实例变量必须创建后才可以通过这个对象来使用,静态变量则直接可以使用类名来调用。

2、什么是反射机制?

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

3、什么是装箱?什么是拆箱?

装箱:自动将基本数据类型转换为包装器类型。

拆箱:自动将包装器类型转换为基本数据类型。

4、Java 中覆盖和重载是什么意思?

覆盖(Override)是指子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小,被覆盖的方法不能是 private的,否则只是在子类中重新定义了一个新方法。

重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同。

Java工程师需要具备什么技能

1、夯实的java基础

当前的java新技术层出不穷,各企业的有不同的侧重点,根据企业用人的需求,只有具备坚实的java基础功底的程序员才能快速掌握新的技术。需要在核心算法、面向对象应用、数据结合及集合框架、反射、输入输出、多线程、异常处理等方面进行深入学习。

2、熟悉Linux操作系统

Linux是当今用作广泛的服务器操作系统。合格的java高级工程师必须具备熟练地Linux操作技巧,这也正是在企业面试中获得加分的重要指标之一。

3、深入学习数据库技术

互联网公司对Java应用离不开数据库技术。任何一个大中型应用,数据库设计的好坏、数据库访问的效率直接决定了该项目的成败。当前数据库最主流的技术有Oracle和MySQL两种,除了能熟练应用数据库体系结构和SQL语句之外,还要掌握数据库设计、SQL语句优化方面。

4、系统的Web前端技术

随着互联网技术由Web2.0向Web3.0迈进,Web前端技术,包括HTML、CSS特别是java script语言越来越被企业重视。很多企业为此设置“Web前端工程师”岗位,所以作为一名合格的java高级工程师要不断学习包括java script在内的Java知识还有其相关的Ajax、JQuery框架、Ext-JS框架。

5、企业及框架

Java是组件和框架的世界,所有的java程序员都应当了解java框架。

6、专门的企业级开发及部署环境

企业在开发、测试、部署实际项目时需要有特定的软件环境,但是很多技术人员往往不太重视这个,所以在工作中会出现很多问题和失误甚至被淘汰。因此,作为java工程师对Linux高级命令集脚本编程、远程登录、Art、单元测试技术、Maven构建技术、SVN应用技术等要有所了解。

7、规范的企业开发流程及文档

软件开发是团队合作,因此企业开发流程和文档规范尤为重要。这也是区分“草根程序员”和“正规程序员”的重要指标之一。开发项目项目无论大小都应该按照企业开发的流程进行(需求分析、系统设计、编码实现、单元测试、系统测试、部署上线)。

java基础知识面试题及答案

1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?

“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问。

java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法与类的任何实例都不相关。

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

2、能否在static环境中访问非static变量?

不能。static变量是属于类的。当类被虚拟机载入时,会对static变量进行初始化。非static变量是属于实例的,这个时候实例还没有被创建,编译器会报错。

3、java基本类型,什么是自动拆装箱?

基本类型:byte,short,int,float,long,double,boolean,char

自动装箱:是java编译器在基本类型和对应的对象包装类型之间做一个转化。比如把int转化为Integer等等。反之为自动拆箱。

4、java的方法覆盖overriding和方法重载overloading是什么意思?

java中方法重载发生在同一个类中有两个或者多个方法名字相同但是参数不同的情况。方法覆盖是子类重新定义父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。

5、java中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?

当新对象被创建时,构造方法会被调用。每一个类都有一个构造方法,在没有给类提供构造函数时,编译器会自动创建一个默认的构造方法

java中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法,每一个构造方法必须有它自己唯一的参数列表

6、java支持多继承吗?

不支持。只能支持单继承,即一个类只有一个父类。可以用implements实现多个接口扩展

7、接口与抽象类的区别

(1)接口中所有方法隐含都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法

(2)接口中声明的变量默认都是final,而抽象类可以包含非final的变量

(3)接口中成员函数默认都会public。抽象类的成员函数可以是private,protected或者public

(4)类可以不实现抽象类和接口声明中的所有方法,这种情况下,类也必须声明为抽象的

8、jdk与jre区别是什么?

java运行时环境(jre)是将要执行的java程序的java虚拟机,同时也包含了执行applet需要的浏览器插件。java开发工具包(jdk)是完整的java软件开发包,包含了jre,编译器和其他工具(比如:javadoc,java调试器),可以让开发者开发,编译,执行java应用程序。

9、什么是只传递和引用传递

值传递是对基本类型变量而言,传递是该变量的一个副本,改变副本不会影响原变量

引用传递一般是对于对象型变量而言,传递的是该对象地址的一个副本,改变副本,会影响原变量

10、进程和线程的区别?

进程是执行着的应用程序,线程是进程内部的一个执行序列。一个进程可以有多个线程

区别:

(1)地址空间和其他资源:进程之间相互独立。同一个进程的各个线程间共享。某进程内的线程在其他进程不可见

(2)通信:进程之间通信ipc,线程间可以直接读写进程数据段(如全局变量)来进行通信--需要进程同步和互斥手段的辅助,以保证数据的一致性

(3)调度和切换:线程之间上下文切换比进程上下文切换快的多

(4)在多线程os中,进程不是一个可执行的实体

11、同步方法和同步代码块的区别

同步方法默认是用this或当前类对象作为锁

同步代码块可以选择以什么来加锁,比同步方法更细粒度。我们可以选择只同步会发生同步问题的部分代码而不是整个方法

12、什么是死锁?

死锁是值多个线程因资源竞争而造成的一种僵局,若无外力作用,这些线程都无法向前推进。产生死锁的4个必要条件

(1)互斥条件

(2)不剥夺条件

(3)请求和保持条件

(4)循环等待

13、如何确保N个线程可以访问N个资源同时又不导致死锁?

一种非常简单的避免死锁的方式:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁

14、java集合类框架的基本接口有哪些?

Collection,Set,List,Map

15、HashMap工作原理

hashMap是以键值对的形式存储。hashmap需要一个hash函数,它使用hashCode和equals方法来向集合/从集合添加和检索元素。当调用put时,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在,value会被更新成新值。hashMap的一些重要的特性是它的容量,负载因子和扩容极限。

16、hashcode和equals重要性体现在什么地方?

hashmap通过hashcode和equals确定键值对索引

17、hashmap和hashtable区别?

hashmap允许键和值是null,hashtable不允许键或值为null

hashtable同步,而hashmap不是


java面试基础知识相关文章:

个人实训感悟700字范本10篇

专业实训收获心得体会2021

程序员个人工作总结范文

关于学习java需要哪些基础知识

大学生实训心得感悟体会2021

程序员工作总结范本10篇

2022计算机专业实习报告5篇

2021年份研究生面试三分钟自我介绍范文五篇

有关java面试基础知识

有关java工程师需要掌握哪些知识

    416049