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

面试大总结之二:Java搞定面试中的二叉树题目 这是本系列的第二篇,与前一篇 面试大总结之一:Java搞定面试中的链表题目 相比,二叉树的题目可以变化的就更多了。本文还是参考整合重写了《轻松搞定面试中的二叉树题目》和《算法大全(3) 二叉树》两篇大作。本文一个小亮点就是几乎每一道题都用了递归和迭代两种方法写过一遍,因为面试时往往可能会被要求写不擅长的那一种。这一千多行的记录也是我在面试摸索过程中的一个小笔记,备份与此。请大神们轻拍指正。今后 阅读详情

第一,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。


第四,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前被执行,有程序为证:


public class text {

	public static void main(String[] args) {
		System.out.println("return" + show());  
	}
	public static int show(){
		try {
			System.out.println("return");  
			return 1;
		} 
		finally{
			System.out.println("finally");  
		}
	}

}



结果是:


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还是很好实现的。


一般Singleton模式通常有三种形式:
第一种形式:懒汉式,也是常用的形式。
1
2
3
4
5
6
7
8
9
10
11
public  class  SingletonClass{
     private  static  SingletonClass instance= null ;
     public  static   synchronized  SingletonClass getInstance(){
         if (instance== null ){
                instance= new  SingletonClass();
         }
         return  instance;
     }
     private  SingletonClass(){
     }
}
第二种形式:饿汉式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//对第一行static的一些解释
// java允许我们在一个类里面定义静态类。比如内部类(nested class)。
//把nested class封闭起来的类叫外部类。
//在java中,我们不能用static修饰顶级类(top level class)。
//只有内部类可以为static。
public  class  Singleton{
     //在自己内部定义自己的一个实例,只供内部调用
     private  static  final Singleton instance =  new  Singleton();
     private  Singleton(){
         //do something
     }
     //这里提供了一个供外部访问本class的静态方法,可以直接访问
     public  static  Singleton getInstance(){
         return  instance;
     }
}
第三种形式: 双重锁的形式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  class  Singleton{
     private  static  volatile  Singleton instance= null ;
     private  Singleton(){
         //do something
     }
     public  static   Singleton getInstance(){
         if (instance== null ){
             synchronized(Singleton. class ){
                 if (instance== null ){
                     instance= new  Singleton();
                 }
             }
         }
         return  instance;
      }
}
//这个模式将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。
//这种模式中双重判断加同步的方式,比第一个例子中的效率大大提升,因为如果单层if判断,在服务器允许的情况下,
//假设有一百个线程,耗费的时间为100*(同步判断时间+if判断时间),而如果双重if判断,100的线程可以同时if判断,理论消耗的时间只有一个if判断的时间。
//所以如果面对高并发的情况,而且采用的是懒汉模式,最好的选择就是双重判断加同步的方式。





Java面试中,最常被人问到的几个问题 1. java.util.*包的UML结构图。 2. Vector和ArrayList、LinkedList区别? Hashtable 和 HashMap之间的区别 3. String、StringBuffer,StringBuilder之间区别。 立即下载

相关推荐

淘宝抓包,直达函数内部request请求体和response响应体, 告别FD, Charles,SSL,justtrustme 等http代理,证书工具。

淘宝抓包,hook发包函数,直接获取response相应数据

binary66的博客 4472

Java面试被问到的问题

Java面试问题

qq_43379611的博客 7138

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 449

【面试】Java面试频繁问到的题最新整理(附答案)

序列化就是一种用来处理对象流的机制,就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输于网络之间。可通过实现java.io.Serializable接口来实现序列化。AOP是面向切面编程,用于在不改变原有逻辑的基础上增加一些额外的功能,如事务管理、日志、缓存、权限控制等。Spring AOP是基于代理的。如果目标对象实现了接口,则默认采用JDK动态代理。如果目标对象没有实现接口,则采用CgLib进行动态代理。如果目标对象实现了接口,且强制CgLib代理。

DreamSun的博客 5898

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1331

保姆级教程:在RV1126开发板上跑通YOLOv5口罩检测(从数据集到摄像头实时识别)

本文提供了一份详细的RV1126开发板部署YOLOv5口罩检测系统的全流程指南,涵盖数据集准备、模型训练优化、边缘部署及实时摄像头识别等关键步骤。重点解析了RV1126开发板的性能特征、YOLOv5模型训练调优技巧、RKNN模型转换量化策略,以及部署过程中的性能优化方案,帮助开发者高效实现边缘端目标检测应用。

weixin_27310985的博客 109

面试JAVA常被问到的问题(持续更新中)

引言 有的面试会被问到有没有写博客,这时候我尴尬,不知道怎么回答,所以这篇文章仅仅是把我面试JAVA的遇到的问题记录下来而已,也算是我写博客迈出的第一步,起码,以后被问到:有没有写博客?我可以回答,我写过。 (最主要的是以后换工作我不用频繁百度常见面试题了。。。。) ps 1,别把我太当回事,我是个LJ; 2,说得不对的地方请多多包涵,想看更详细的请百度官方文档和其他大佬的文章; 3,如果有被问到......

weixin_39388918的博客 2万+

Vibe Draw:AI实现2D草图转3D建模,开源免费的设计师宝藏软件!

AI实现2D草图转3D建模,开源免费,设计师进来看一下?

Code_流苏:在代码中寻诗意,在实践中觅真知 2152

10万字208道Java经典面试题总结(附答案)

1、JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。 2、== 和 equals 的区别是什么? 对于基本类型,==比较的是值; 对于引用类型,==比较的是地址; equals不能用于基本类型的比较; 如果没有重写equa

学Java,找哪吒 106万+

Python 爬虫实战:科研数据库学术论文数据抓取

在科研工作中,学术论文是获取前沿知识和研究方法的重要资源。然而,手动从科研数据库中查找和整理论文信息往往耗时费力。幸运的是,Python 爬虫技术可以自动化这一过程,帮助我们高效地抓取和管理学术论文数据。本文将详细介绍如何使用 Python 爬虫技术抓取科研数据库中的学术论文数据,并进行全字段提取和文献管理,助力科研工作。

u014481728的博客 946

【精细解读】xapp585(多通道LVDS接口ADC)

xapp585的参考设计有Verilog和VHDL两种源码。

FPGA艺术家的博客 533

JAVA面试常被问到的题目[转载+解答]

从应届生应聘网上看到的,发现自己一大半都似曾相识,但都没把握,看来还是要找个机会认真做过去,今天没机会了,明天吧.这些东西技术面肯定要准备的,鄙视中博的纯水面试. 几乎整整一天的时间都扑在这套题上了,收获也不少,接口,抽象类,内部类等等以前不是很明白的都重新了解了一遍.会做的系统解说了一下,不会做的GOOGLE后分析理解辨别真伪后总结了过来,会做但没把握的都自己编写测试代码在eclipse上过了...

weixin_34250434的博客 167

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

面试中经常问到的几道算法题,诸佬们还记得如何解答嘛

本文主要介绍了面试中经常被问到的几道算法题,内附详解,诸佬们是否都还记得怎么回答呢,快来试试看吧

小威的博客 2338

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

面试中JVM常被问到的问题以及对应的答案

本文总结了JVM高频面试问题,涵盖内存模型、垃圾回收、类加载机制等核心内容。重点包括:内存区域划分(线程私有与共享区域)、GC可达性分析算法与常见收集器(Serial/CMS/G1等)、双亲委派模型及其打破场景、OOM类型与内存泄漏排查方法(使用jmap、MAT工具)、JIT优化及实战调优建议(年轻代设置、Full GC排查步骤)。文章以简明问答形式呈现,适合作为JVM知识速查和面试准备参考,建议结合实际案例进行说明。

专注于与编程相关的知识内容分享 483

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

常被问到的十个 Java 面试题

在这篇文章中,我试图收录最有趣和最常见的问题。此外,我将为您提供正确的答案。 接下来,就让我们来看看这些问题。 (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程等待你来学习。完全免费哦!) 1. 以满分十分来评估自己——你有多擅长 Java? 如果你并不完全确信你自己或是你对 Java 的熟练程度,那么这会是一个非常棘手的问题。如果有这种情况,你应该把打分调低一点。之...

Bzwanghao的博客 235

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

9-题目Java面试中问到的题目

Java面试中问到的题目(高频技术问题+场景题)9.线上发现CPU使用率飙升到500%,你怎么排查?10.应用GC频繁,导致服务卡顿,你如何定位和解决?11.在微服务架构下,如何进行配置管理和服务发现?12.如何保证数据库和Redis之间的数据一致性?13.为什么MySQL用B+树,MongoDB用B树?14.MySQL千万级数据量,查询如何做优化?15.Redis保存库存的时候,如何避免被Redis清理掉?16.电商平台中订单未支付过期如何实现自动关单?

m0_68935893的博客 957

面试大总结之一:Java搞定面试中的链表题目

链表是面试中常出现的一类题目,本文用Java实现了面试中常见的链表相关题目。本文主要参考整合重写了《轻松搞定面试中的链表题目》和 《算法大全(1)单链表》两篇大作。两篇大神的实现分别是C和C#,因为我更喜欢用Java面试,所以用Java重写了所有实现,并附上自己的一些思考注释。算法大全(1)单链表 尚未有一些问题尚未整合进来,很快我会更新本文。 package LinkedListSum

2万+

【亲测免费】 LeetCode Top 100 题目及解答 (Java 完整版) - 面试必备

LeetCode Top 100 题目及解答 (Java 完整版) - 面试必备 【下载地址】LeetCodeTop100题目及解答Java完整版-面试必备 LeetCode Top 100 题目及解答 (Java 完整版) - 面试必备本仓库提供了 LeetCode 上排名前 100 的经典编程题目及其详细Java语言...

gitblog_09807的博客 1010
上一篇: ireport各个版本的下载地址分享
下一篇: 这70个Java必背英语单词不会,就别说你是Java程序员!
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值