Java面试常被问到的题目+解答

简介:

第一,anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?


不行,对于匿名内部类,看到的一句话说的很到位:


new <类或接口> <类的主体>

这种形式的new语句声明一个新的匿名类,他对一个给定的类进行扩展,或实现一个给定的接口。他还创建那个类的一个新实例,并把他作为语句的结果而返回。


这就是匿名类的实质,它本身就是一个类的继承或一个接口的实现,所以继承其它类或借口是无意义的.在eclipse中冶证实了我的想法.无论是继承其它类还是实现其它借口都显示Syntax error on token。


第二,staticnestedclass和innerclass的不同,说得越多越好(面试题有的很笼统)。


static nested class 指静态嵌套类,或称嵌套类,是C++中常用的说法,inner class指内部类,是JAVA中的说法。


内部类是一个类内部类的统称,具体分为四种:成员类,静态成员类,局部类,匿名类。其中匿名类是局部类的特殊情况。对于成员类和静态成员类都存在于类的顶层代码中。相当于类的静态方法和非静态方法的关系。区别在于成员类依赖于类实例而静态成员类不依赖。所以前者只能访问实例方法和成员而后者只能访问静态方法和成员。它们都用于创建一个只和当前类有关。和其它类无关的依赖类.是否静态取决于是否依赖类的实例。局部类相当于局部变量。存在于类的局部代码中。相当于在main()中随意定义和使用类。唯一的不同是它只能使用final型的局部变量。这和垃圾回收机制有关。即局部变量会在代码块结束后被回收。而对象不一定。所以对象只能使用final的局部变量。同样,局部类存在的局部代码块也可以有静态和非静态的差别。局部类罪常见的应用就是匿名类。匿名类就是无名子的局部类。常在SWING设计中的添加监听中出现。


static nested class相当于inner class中的静态成员类。


第三,&和&&的区别。


这个问得很少。


&和^,<<,<<<,|同属于位运算符,其中&是按位与,例如,1&1=1,1&0=0,&&是逻辑运算符,处理真假值,例如,true&&true=true。

如果你想学习Java可以来这个群,首先是二二零,中间是142,最后是906,里面可以学习和交流,也有资料可以下载。


第四,hashmap和hashtable的区别。


常问。


hashmap可以看做是hashtable的替代者,HashMap的Value和Key都可为NULL,而HashTable不可以,同时,HashTable是线程同步的,而HashMap不是.HashTable用Iterator遍历,HashMap用Enumeration遍历。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。计算index的方法不同,HashTable直接利用hashcode()得出,HashMap对hashcode重新计算得出。


第五,collection和collections的区别。


你千万别说一个是单数一个是复数。


collection是结合类的上级接口,子接口有List和Set等,Collections是java.util下的一个工具类,提供一些列静态方法对集合搜索排序线程同步化等。


第六,什么时候用assert。


api级的技术人员有可能会问这个。


在调试和优化中使用,用于判断逻辑表达式真假,若为假,终止程序并返回异常.assert比if的优点在于可以选择是否开启assert检查,也就是说assert产生的测试代码可以在正式发布时候选择忽略,这带来极大便利,默认assert检查是关闭的。此外,Junit相比assert来说,有着相似但更强大的测试能力。


第七,gc是什么?为什么要有gc?


基础。


GC 即 garbage collection(垃圾收集),是JAVA用于回收内存的一种方式,主要的实现方法有引用计数,标记回收,复制清除等,GC可以避免内存泄露和堆栈溢出,有效提高内存的利用效率,同时将程序员从繁琐的内存管理中释放出来。


第八,string s=new string("xyz");创建了几个stringobject?


2个,文字池中1个,堆中1个,先在文字池中创建1个"xyz"对象,再在堆中拷贝一个"xyz"对象,并将其赋给引用s。


第九,math.round(11.5)等於多少?math.round(-11.5)等於多少?


Math.round(x)相当于(int)Math.floor(x+o.5f),

故math.round(11.5)=Math.floor(11.5+0.5)=Math.floor(12)=12;

Math.round(-11.5)=Math.floor(-11)=-11;


第十,short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?


面试题都是很变态的,要做好受虐的准备。


s1=s1+1会出错,s1+1是int型,不能将int赋值给s1.需要显示转换,s1=(int)(s1+1).而s1+=1不会出错,至于原因,有人说和编译器的机制有关,需要看编译原理,话说编译原理什么的最讨厌了,就这样吧。


第十一,sleep()和wait()有什么区别?


搞线程的最爱。


1,sleep()是java.lang.Thread中的静态方法,wait()是java.lang.Object中的方法;

2,sleep()用作当前线程阻塞自己,并在制定时间后恢复,wait()用于当前线程决定其他线程阻塞,是线程通信的表现;

3,sleep()不释放资源,wait()释放资源;

4,sleep()必须捕获异常,而wait()不需要。


第十二,java有没有goto?


很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。


goto是java的关键字,但java不支持goto,goto会影响程序的可读性,使逻辑显得混乱。我的这本java教程上说因为同样的原因,要尽量少用continue和break,且可以用等价的无continue/break循环代替,更不要说goto了...总之一句话,java不支持goto。


第十三,数组有没有length()这个方法?string有没有length()这个方法?


数组无,数组是成员变量,length.String是成员函数length();我不知道这个题意义何在,平时都用eclipse的,会在意这个么...


第十四,overload和override的区别。overloaded的方法是否可以改变返回值的类型?


常问。


我写的一篇随笔详细说明了重载,重写和多态之间的关系,返回值类型不包含在函数签名中,所以只有返回值不同的重载不成立。


第十五,set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用hashcode()还是equals()?它们有何区别?


这个属于集合类的查找机制问题,在集合类中,确定两个元素是否相同,是用equals方法进行比较,hashcode的存在在于可以给元素快速分配一个index来存储。可以将collection看做很多个大箱子,index是箱子的编号,先将要扔进去的物品进行hash确定index,扔进响应箱子,然后再喝箱子里德其它物品equals()来比较是否相同。此外。相等的物品一定具有相同的hashcode,不等的物品不一定。具有相同hashcode的元素不一定相等。不同的hashcode的元素肯定不等。以上规则可以想象一下相等物品一定要分在同一个箱子中的情况。


第十六,给我一个你最常见到的runtimeexception。


如果你这个答不出来,面试的人会认为你没有实际编程经验。


NullPointerException,空引用异常.说实话,中软的笔试题就有这个,我连题目意思都理解错了,压根没认出来runtime exception是指运行时异常。


第十七,error和exception有什么区别?


为什么水的题最容易出现?


感觉这个题很水,要说C++的话有区别,感觉JAVA里区别不大。反正中软的题目里我就瞎扯了。单纯从字面的角度去说,error就是严重的错误,像JVM产生的一些错误等,会停止程序运行或产生错误结果。exception是一定程度上可预见的错误,可以捕获以及处理。其实error也可以捕获...


第十八,list,set,map是否继承自collection接口?


Collection的子接口包括BeanContext, BeanContextServices, BlockingQueue<E>, List<E>, Queue<E>, Set<E>,SortedSet.不包括Map

差点被某网页忽悠了,还是JAVA DOC比较专业。


第十九,abstractclass和interface有什么区别?


常问。


真的是常问...


抽象类可以有抽象方法和普通方法,也可以有自己的数据成员。接口只允许有常量,抽象方法和静态类成员。接口可以被多继承,抽象类不行。接口被实现时,所有方法必须被重写。抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类。


第二十,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?


abstact方法需要子类重写,重写的概念是就实例方法而言, 所以不能是static。因为同一原因,要重写就不能native,抽象方法在抽象类中,无实例,不能被调用,也没有内容,所以synchronized没有意义。abstract方法的修饰符只有private和public。


第二十一,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?


接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类。换句话说,抽象类除了不能实例化以外和普通类没什么区别。


第二十二,启动一个线程是用run()还是start()?


用start(),start()会通过调用run()来实现多进程。


第二十三,构造器constructor是否可被override?


构造函数不能被重写。


第二十四,是否可以继承string类?


String类为final,不可被继承。


第二十五,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?


多线程编程涉及不多,运用到锁的更是少的可怜

1 可以进入此对象其他非同步方法.

2 不可进入此对象此同步方法

3 不可进入此对象其他同步方法


第二十六,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?


return前被执行,有程序为证:



结果是:


retrun

finally

return 1


第二十七,编程题:用最有效率的方法算出2乘以8等於几?


有c背景的程序员特别喜欢问这种问题。


第二十八,两个对象值相同(x.equals(y)true),但却可有不同的hashcode,这句话对不对?


这句话本身没有错,equals和hashcode都是Object的方法,都可以覆盖并由程序员自己决定算法,完全可以做到以上要求,但问题是如果是Collection中的元素,这样做会带来一些错误,一些不可预知的错误,所以在Collection中这样做是禁止的。


第二十九,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?


引用传递,毫无疑问,对象传递只能是引用.你可以换改变引用的内容,但并不能改变引用本身。


第三十,swtich是否能作用在byte上,是否能作用在long上,是否能作用在string上?


switch语句中的表达式只能是整数类型,即必须是int,char或者枚举类型数据。不能是boolean或浮点型,甚至其他类型的整数数据(byte,short及long)。


从教材上摘录而来,应该相当权威了。


第三十一,编程题:写一个singleton出来。


singleton模式即确保一个类只有一个实例,应用级singleton好像比较复杂,但最简单的singleton还是很好实现的。

相关文章
|
1月前
|
Java 测试技术 微服务
最新技术栈下 Java 面试高频技术点实操指南详解
本指南结合最新Java技术趋势,涵盖微服务(Spring Cloud Alibaba)、响应式编程(Spring WebFlux)、容器化部署(Docker+Kubernetes)、函数式编程、性能优化及测试等核心领域。通过具体实现步骤与示例代码,深入讲解服务注册发现、配置中心、熔断限流、响应式数据库访问、JVM调优等内容。适合备战Java面试,提升实操能力,助力技术进阶。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
100 25
|
25天前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
77 3
|
1月前
|
Web App开发 缓存 前端开发
浏览器常见面试题目及详细答案解析
本文围绕浏览器常见面试题及答案展开,深入解析浏览器组成、内核、渲染机制与缓存等核心知识点。内容涵盖浏览器的主要组成部分(如用户界面、呈现引擎、JavaScript解释器等)、主流浏览器内核及其特点、从输入URL到页面呈现的全过程,以及CSS加载对渲染的影响等。结合实际应用场景,帮助读者全面掌握浏览器工作原理,为前端开发和面试提供扎实的知识储备。
100 4
|
24天前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
181 48
|
21天前
|
缓存 NoSQL Java
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
68 6
|
24天前
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
89 9
|
27天前
|
设计模式 安全 Java
Java 基础知识面试题全解析之技术方案与应用实例详解
本内容结合Java 8+新特性与实际场景,涵盖函数式编程、Stream API、模块化、并发工具等技术。通过Lambda表达式、Stream集合操作、Optional空值处理、CompletableFuture异步编程等完整示例代码,助你掌握现代Java应用开发。附面试题解析与技术方案,提升实战能力。代码示例涵盖计算器、员工信息统计、用户查询、模块化系统设计等,助你轻松应对技术挑战。
57 8
|
26天前
|
缓存 Java 索引
2025 年 Java 面试必备最常见 200 + 面试题及答案解析
这是一份针对Java面试的综合技术方案与应用实例文档,涵盖Java基础(JDK/JRE、字符串、IO流)、容器(ArrayList/LinkedList、HashMap)、多线程(线程创建、同步、线程池)、数据库(MySQL索引、Redis缓存穿透)及Spring框架(IOC容器、热部署)等核心模块。通过详细解析常见面试题,帮助读者深入理解并掌握Java核心技术,为应对面试提供全面指导。此外,还涉及反射、设计模式、JVM调优等进阶内容,助力开发者全面提升技能。代码示例可从提供的链接下载。
119 6
|
24天前
|
存储 缓存 安全
Java 集合篇面试题全面总结及答案解析
本文总结了Java集合框架的核心概念、常见集合类的特性与应用场景,以及开发中可能遇到的问题与解决方案。内容涵盖集合框架的基础接口(如Collection、Set、List、Map)、泛型的优点、线程安全集合类(如ConcurrentHashMap、CopyOnWriteArrayList)、常见集合类的区别(如ArrayList与LinkedList、HashMap与HashTable)等。此外,还详细介绍了如何实现LRU缓存、FIFO队列、优先级队列及栈等数据结构,并提供了相关代码示例。通过本文,读者可以全面掌握Java集合相关的面试知识点及其实际应用技巧。
50 1
|
26天前
|
算法 安全 Java
2025 校招必看:Java 开发面试核心知识点深度解析及最新笔面试题汇总
本文针对2025校招Java开发面试,系统梳理了Java基础、集合框架、多线程并发、JVM等核心知识点,并附带最新笔面试题。内容涵盖封装、继承、多态、异常处理、集合类使用、线程同步机制、JVM内存模型及垃圾回收算法等。同时深入探讨Spring、数据库(MySQL索引优化、Redis持久化)、分布式系统(CAP理论、分布式事务)等相关知识。通过理论结合实例解析,帮助考生全面掌握面试要点,提升实战能力,为成功拿下Offer奠定坚实基础。
116 2