×

java软件开发工程师面试题

java软件开发工程师面试题(关于JAVA软件工程师的面试(java开发工程师面试))

admin admin 发表于2024-09-09 20:38:33 浏览6 评论0

抢沙发发表评论

大家好,今天小编来为大家解答以下的问题,关于java软件开发工程师面试题,关于JAVA软件工程师的面试(java开发工程师面试)这个很多人还不知道,现在让我们一起来看看吧!

本文目录

关于JAVA软件工程师的面试(java开发工程师面试)

一般面试先是自我介绍,这个就不给你写了,简单说几句就行,不是重点。

接下来会让你介绍一下你做过的项目,这绝对是一个非常关键的问题,面试官一眼就能看出来你的能力,如果觉得你行,后面才会问细节技术问题,否则就开始应付你了。

这个问题该怎么答?一定要以技术和架构为主,业务逻辑为辅。说的越底层越好,比如你们公司项目底层是通过什么连接数据库的?哪种方法?为什么这么选择?

是否用到了spring的DI?是否将action也交给spring托管了?都在哪些地方使用了spring的事务?其实这种问题多了去了,最主要的是你一定要非常了解你做过的项目,别说业务逻辑,那都没用。

去看看hibernate的面试题,网上有。如果你的项目没用这个技术,就别提,否则一问你就傻了,对技术经理的面试千万别装

struts的原理?spring的原理?hibernate的save和方法有什么不同?这些都必须清楚,如果我上面提到的任何一点你不清楚,那就别去面试了,绝不夸张,这些都是基础。

java程序员面试题

java异常机制的原理与应用答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象。实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则,交给JVM进行处理。当try语句捕获异常之后,将与catch语句的异常类型进行匹配,如果匹配成功则执行catch内的语句。简单的应用:在所以throws语句的地方加入try-catch。标准应用:try-catch-finally-throw-throws一起使用。 2. 垃圾回收机制的优点答:释放无用的对象所占用的空间。方式:自动回收,手动回收。使用System.gc(),实际上调用Runtime.getRuntime().gc()3. Error与Exception区别答:Error是jvm进行处理,是jvm出错exception是可以由程序处理的,可以用try-catch捕获的4. final,finally,finallize答:final定义的变量的值不能改变,定义的方法不能被覆盖,定义的类不能被继承finally是异常的统一出口,finallize是垃圾回收前的收尾工作,是Object类定义的5. Anonymous Inner Class是否可以extends,是否可以implements Interface答:允许继承和实现,因为匿名内部类就是在抽象类和接口的基础上发展起来的6. Static Nested Class 与Inner Class的区别答:使用Static定义的Class就是外部类,可以通过外部类. 内部类直接访问而Inner Class是不能被外部访问的,只能通过外部类的实例再找到内部类实例。7. HashMap and HashTable?答:HashMap:1) released in jdk 1.2,new Class 2)采用异步处理方式,性能较高,是非线程安全的 3)允许nullHashTable:1)released in jdk 1.0 ,old Class 2)采用同步处理方式,性能低,是线程安全的3)不允许null8. assert代表什么?答:asserts是jdk 1.4之后发布的新关键字,表示断言,即程序执行到某个地方肯定是预计的值,一般开发很少使用。要使用assert,必须加上 -ea参数9. gc是什么?答:gc是garbage collection,垃圾回收,使用gc可以进行垃圾空间的释放10. String s = new String("xyz")产生了几个对象?答:一个匿名对象xyz,在栈空间内。一个new实例化的对象,在堆空间内。11. sleep() and wait()?答:sleep()是Thread类定义方法,表示线程的休眠,可以自动唤醒wait()方法是Object类定义的方法,需要手动notify()和notifyAll()//sleep()不释放资源,wait()释放资源12. java中存在goto,但不能使用13.数组有没有length(),String有没有length()?答:数组有length属性,String有length()14. Overload与Override的区别答:Overload:重载 |- 在一个类中定义的若干方法 |- 所有的方法名相同,但参数类型或个数不同 |- 只有参数有关,与返回类型无关Override:覆写 |- 在继承的关系中 |- 子类定义了父类同名的方法,参数类型或个数最好完全一样。 |- 访问权限不能更严格15. Set里的元素不能重复,用什么方法区分?==与equals()方法的区别答:set里的元素是不能重复的,用iterator()方法来区分重复与否,==属于地址比较, ==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true 而在比较引用时,如果引用指向内存中的同一对象,结果为true 16. 列出常见的 runtime exception答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException17. abstract class 和 interface有什么区别?答:抽象类: |-由抽象方法和常量、变量、全局常量、构造方法、普通方法组成 |-使用abstract声明 |-子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法 |-存在单继承的局限 |-抽象类可以实现若干个接口接口: |-由抽象方法和全局常量组成 |-使用interface关键字 |-子类要通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法 |-一个子类可以实现多个接口 |-接口不能继承一个抽象类,但允许继承多个接口18. 启动一个线程要用start(),因为要通知jvm进行cpu资源的分配19. try{}里面有一个return,问finally{}里面的代码是否执行,在什么时机执行?答:finally{}里面的代码执行,在return之前。20. 写一个singleton答:singleton的核心就是构造方法私有化,Class,Runtime都采用单例package com.leongod.demo;public class Singleton(){ private static final sin = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return sin;}}21. 程序设计:输入一组数字,然后排序输出答:package com.leongod.demo;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;public class IO {public static void main(String args) throws Exception { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一组数字,中间用空格分割:"); String str = buf.readLine(); Set《Integer》 set = new TreeSet《Integer》(); String arr = str.split(" "); for(String s : arr) { if (s.matches("\\d+")) { set.add(Integer.parseInt(s)); } } Iterator《Integer》 it = set.iterator(); System.out.println("排序后的结果:"); while (it.hasNext()) { System.out.print(it.next() + ","); }}}22.列出目录内的文件package com.leongod.demo;import java.io.File;import com.sun.org.apache.xpath.internal.functions.FuncBoolean;public class FileDemo {public static void main(String args) {?? File file = new File("D:" + File.separator + "kongkong");?? fun(file);}public static void fun(File file) { if (file.isDirectory()) { File lf = file.listFiles(); if (lf != null) { for(File f : lf) { fun(f); } } }else { System.out.println(file.toString()); }}}23. char可以存一个中文汉字吗?答:可以,使用了unicode编码24.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:两种多线程方法,继承Thread类,实现Runnable接口 |-Thread类是Runnable接口的子类 |-使用Runnable接口可以实现资源共享的目的 |-所有线程操作都必须通过Thread类的start()方法启动两种实现同步的方法: |-同步代码块:Synchronized(this) |-同步方法25.f=3.4是不对的,3.4默认是double类型的26.String and StringBuffer?答:String 不可以修改,StringBuffer可以修改27.Class.forname向容器中加载驱动程序28.int与Integer有什么区别?答:int是基本数据类型,Integer是包装类在jdk1.5以后,可以实现自动装箱和拆箱29.2*8有效的方法是移位操作:2《《330.请说出类集框架的完整结构答:类级框架的最大接口:Collection、Map、Iterator、EnumerationCollection:存放单值 |-List:允许有重复内容 |-ArrayList:异步处理,新的操作类,非线程安全 |-Vector:同步处理,旧的操作类,线程安全,支持Enumeration |-Set:不允许有重复的内容,依靠hashCode()和equals()进行重复的验证 |-HashSet:无序存放 |-TreeSet:有序存放,按Comparable排序 |-Map:存放一对值 |-HashMap:新的类,异步处理,非线程安全,允许有null |-HashTable:旧的类,同步处理,线程安全,不允许有null |-TreeMap:有序排列,按key配需 |-Iterator:迭代输出,依靠collection接口中的iterator方法输出,是新的输出标准31.是否可以继承String类?答:不可以,因为使用了final关键字 小弟,没分啊

面试java开发工程师一般会提什么问题

首先都是问工作经历,上一家公司的工作情况(应届生会问些学校表现、毕业设计之类的)。然后问些技术问题,JAVA基础的概念,线程、并发、网络、文件操作、数据库操作之类等等。学习java推荐选择千锋教育,千锋教育拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。java开发工程师的就业方向有:1.Android开发Android是世界上最大的智能手机操作系统。根据Strategyalytics的最新研究报告,2016年第三季度全球智能手机出货量达到3.75亿台。Android操作系统获得了创纪录的88%全球市场份额,挤压了苹果IOS等平台。Java是Android应用的主要开发语言。2.web开发Web开发语言很多,Java就是其中之一。Java在开发高访问、高并发、集群的大型网站方面有很大的优势,比如去哪儿网、美团等。3.客户端开发Java客户端开发主要针对政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、财务、考试、物流、矿山等信息系统。然而,客户端开发只是为了帮助自己企业的主营业务。想要了解更多关于java的相关信息,推荐咨询千锋教育。千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。课程包含HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训。

常见软件开发面试题和答案

接口的意义

规范,可拓展,回调

抽象类的意义

为其子类提供一个公共的类型,封装子类中重复的内容,定义抽象方法,子类虽然有不同的实现,但是定义是一致的

内部类的作用

内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。

在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。

创建内部类对象的时刻并不依赖于外围类对象的创建。

内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。

内部类提供了更好的封装,除了该外围类,其他类都不能访问

父类的静态方法是否可以被子类重写

static静态的方法是属于类的,而继承和重写是相对于对象来说的。

如果子类中有父类中的静态方法,只能说是隐藏父类的静态方法

java虚拟机的特性

一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码的,而引入了java虚拟机后,java代码在不同的

平台上运行不需要重新编译

哪些情况下的对象会被垃圾回收机制处理掉

Java垃圾回收机制最基本的做法是分代回收,内存中的区域被划分成成不同的世代,年轻,年老,永久,当一个对象存活时间足够久的时候

就会被复制到年老代中,对于不同的世代可以使用不同的垃圾回收算法。进行世代划分的出发点是对应用中对象存活时间进行研究之后得出的统计规律。一般来说,一个应用中的大部分对象的存活时间都很短。比如局部变量的存活时间就只在方法的执行过程中。基于这一点,对于年轻世代的垃圾回收算法就可以很有针对性。

==和equals的区别

==是一个操作符而equals是一个方法,并且这个方法是Object中的方法,我们可以通过重写来equals方法来实现我们自己的比较逻辑

为什么说对象的equals方法比较为true,那么他们的hashcode方法返回的int值也要相同?

如果两个对象根据equals()方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果。

如果两个对象根据equals()方法比较是不相等的,那么调用昌平电脑培训发现这两个对象中任意一个对象的hashCode方法,则不一定要产生相同的整数结果。

想面试Java开发岗位,请问过来人要准备的专业面试题都有哪些

首先确认,你是java行业的新手。

面试题。

java基础部分(常见的):

1、java有几种基本数据类型。

2、冒泡排序,(笔试常出现)

3、解释什么是类的成员变量,局部变量,实例成员变量,类成员变量?

4、最狠得就是——什么是面向对象,这个只能自己组织语言,按自己的理解来回答,根本找不到具体答案。

5、抽象类与接口的区别。

6、线程有几种实现方式,分别是什么?

7、如何使线程同步?

8、什么是GC?

9、构造方法是否能被重写?为什么?

10、java关键字是否区分大小写?

11、for循环里的三个表达式的执行顺序是什么?

12、简述什么是关系型数据库?

13、arrayList与linkedList的区别?

14、String与StringBuffer的区别?

数据库部分(常见):

1、组函数,2、having和where的区别,3、伪列,4、怎么实现数据分页?5、表链接6、事务(ACID)7、数据安全8、序列9、索引10、你所参与过的项目用了几个表?

JDBC部分(常见):

1、JDBC的六个步骤。

2、JDBC分页。

Servlet(常见):

1、客户端发送请求的几种方式。

2、servlet的生命周期的几个阶段。

3、forward跳转与redirect跳转的区别。

4、cookie与session的区别。

5、三大作用域。

6、连接池。

JSP(常见):

1、jsp的九大内置对象。

2、EL表达式。

3、JSTL标签库。

javaScript(很少会问,了解即可):

1、DOM:对象,文档,模型

2、鼠标点击事件:

AJAX(了解):

1、ajax请求与传统请求的区别。

框架相关:

1、Struts2数据处理机制。

2、OGNL表达式。

3、了解下值栈。

4、MVC开发模式的好处。

5、Hibernate与MyBatis的区别。

6、连接池

7、struts2与SpringMVC的区别。

8、IOC,DI。

9、AOP。

10、运用框架的好处。

11、用到过的开发模式有哪些?

注:以上内容只要会一大部分,面试基本都会通过,如果全部会的话,就可以挑offer了,会一半就有很大的可能了(手都敲麻了.。。。)。

java面试题,求大神指点

一般来说面试我都记下印象深刻的面试题,其他感觉都没什么好记的,但是今天这个面试的过程感觉是我职业生涯中比较有意思的一次面试,遂分享出来。  今天顶着大太阳出去面试,找了好久终于找到了这家公司的位置,貌似是集体办公区域,就是一层楼有N个公司在办公,也没什么隔断。心想创业公司吧,这样也正常。在这之前已经面过三家公司都挺顺利,公司规模都还可以,还有一家一面也是过了等二面。之所以来这家公司面呢是因为对公司的产品还挺感兴趣的,想来看看。  然后到地方后面试官先给了我一份卷子做,都是些很简单的题,写完后等了好久面试官来了,开始进行面试。面试官先看了下我的简历,然后说你怎么两年才做这么4个项目,尤其是第一家才1个项目。我说外包公司项目多,没必要挨个写上,写上最近一家公司的项目,和之前公司代表性的项目就行了。然后他就教育了我一番,说怎么写这么点儿呢,很容易让人觉得你啥都没做,做过的都得写上。我之前一直以为我这种两年多经验的写一页简历足够了,不过他说了下我觉得确实可以考虑考虑多写一些。。。不过老实说我在想。。难道他毕业四五年了还把刚毕业的项目往简历上写?  吐槽完项目。面试官不知道为什么看着我的简历以为是培训班出来的,然后就旁敲侧击的问我毕业是否有参加过什么培训啊。我满脸黑线,我简历写的我第一份工作毕业就进去的,而且我项目都是专业领域性很强的项目,这是从哪儿看出来的。然后这面试官又问我那你大学都学什么课程啊,我又耐着性子解释了一圈。然后他看问不出啥的就没问了。然后就问了一个项目有关的正常问题。开始问我技术了。最后问我有什么想问的,我就照例问了下公司技术栈,然后他说后端用java nodeJs ,我就问为什么后端会用两种技术栈? 然后他回答道,这么用肯定是处于公司技术考量啊,巴拉巴拉的,反正最后也没说个明白为啥会用两种技术。。然后这个时候提了一嘴既然采用nodeJs是觉得更加方便为什么不考虑考虑使用Python。老实说我觉得我这句话作为大家都是技术人员,技术探讨性的问题应该很正常吧,结果这句话不知道为什么又把他戳高潮了,他直接回到 为什么要用Python?我在严肃的和你讲公司技术栈,你觉得这样好吗? 你觉得这样提问好吗?你这样随意的一问觉得合适吗?  最后伴随着这几个疑问,面试结束了。。。老实说我被面的有点稀奇古怪的,尽管他问的问题我觉得我应该全都回答上了,但看他的样子似乎很不高兴。。。面完后我的内心状态应该如下吧

Java开发面试题

1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。2、访问修饰符public,private,protected,以及不写(默认)时的区别?答:修饰符当前类同 包子 类其他包public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × × 类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。3、String 是最基本的数据类型吗?答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。4、float f=3.4;是否正确?答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。6、Java有没有goto?答:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)7、int和Integer有什么区别?答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

java编程程序员技术面试常见面试

随着互联网的不断发展,java开发成为了众多开发工程师使用的主流编程开发语言。今天,java课程培训机构就一起来了解一下,在java程序员面试过程中,有哪些比较常见的技术面试问题需要我们了解。

1、什么是线程?

线程是操作系统能够进行运算调度的小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

2、线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。

3、如何在Java中实现线程?

两种方式:java.lang.Thread类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread类或者直接调用Runnable接口来重写run()方法实现线程。

4、有哪些不同的线程生命周期?

当我们在Java程序中新建一个线程时,它的状态是New。当我们调用线程的start()方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且讲它们的状态改变为Running。其他的线程状态还有Waiting,Blocked和Dead。

5、你对线程优先级的理解是什么?

每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OSdependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表低优先级,10代表高优先级。

6、什么是死锁(Deadlock)?如何分析和避免死锁?

死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资源。

分析死锁,我们需要查看Java应用程序的线程转储。我们需要找出那些状态为BLOCKED的线程和他们等待的资源。每个资源都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。

java软件开发面试题

List《Tray》 list2 = new ArrayList《Tray》();for (Tray tray : list) {// 合并自身商品 id 相同的托盘上的商品List《Goods》 gList0 = new ArrayList《Goods》();for (Goods good : tray.goods) {boolean flag = false;for (Goods g0 : gList0) {if (g0.id == good.id) {g0.count += good.count;flag = true;}}if (!flag) {gList0.add(good);}}tray.goods = gList0;// 合并托盘id 相同 的的商品Tray t0 = null;for (Tray tray2 : list2) {if (tray2.id == tray.id) {t0 = tray2;break;}}if (t0 == null) {list2.add(tray);} else {for (Goods good : tray.goods) {boolean flag = false;for (Goods g0 : t0.goods) {if (g0.id == good.id) {g0.count += good.count;flag = true;}}if (!flag) {t0.goods.add(good);}flag = false;}}t0 = null;}list = list2;

java基础面试题有哪些

下面是10道java基础面试题,后附答案

1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?

Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。

Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

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

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

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

3.JDK 和 JRE 的区别是什么?

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

4.是否可以在 static 环境中访问非 static 变量?

static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

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

Java 语言支持的 8 中基本数据类型是:

byte

short

int

long

float

double

boolean

char

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

6.Java 支持多继承么?

不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。

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

Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。

8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

9.接口和抽象类的区别是什么?

Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

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

类可以实现很多个接口,但是只能继承一个抽象类

类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。

Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。

接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

最后祝你面试顺利!

关于java软件开发工程师面试题到此分享完毕,希望能帮助到您。