昨天有读者问我有没有java基础面试题,现在分享出来给大家

篇幅限制,只贴出前五题答案

1、说说&和&&的区别

答:

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现 NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为 0x01

2、 char型变量中能不能存贮一个中文汉字?为什么?

答:

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

3、 "=="和equals方法究竟有什么区别

答:

(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String("foo"); String b=new String("foo");

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。

如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

4、 静态变量和实例变量的区别

答:

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

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest

{

public static int staticVar = 0;

public int instanceVar = 0;

public VariantTest()

{

staticVar++;

instanceVar++;

System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);

}

}

5、 是否可以从一个static方法内部发出对非static方法的调用

答:

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。

6、 Integer与int的区别

6-50题答案请私信关注后转发,私信架构即可获取

7、 请说出作用域public,private,protected,以及不写时的区别

8、 Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

9、 如何实现线程间的通讯

10、 构造器Constructor是否可被override?

11、 abstract class和interface有什么区别?

12、 String是最基本的数据类型吗?

13、 String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

14、 是否可以继承String类?

15、 String和StringBuffer的区别

16、 StringBuffer与StringBuilder的区别

17、 数组有没有length()这个方法? String有没有length()这个方法?

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

19、 final, finally, finalize的区别

20、 运行时异常与一般异常有何异同?

21、 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

22、 java****中有几种方法可以实现一个线程?用什么关键字修饰同步方法

23、 sleep()和wait()有什么区别?

24、 启动一个线程是用run()还是start()?

25、 List和Map区别?

26、 List, Set, Map是否继承自Collection接口?

27、 说出ArrayList,Vector, LinkedList的存储性能和特性

28、 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()? 它们有何区别?

29、 你所知道的集合类都有哪些?主要方法?

30、 java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类

31、 字节流与字符流的区别

32、 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用

33、 能不能自己写个类,也叫java.lang.String?

34、 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

35、 Jvm如何调优?

36、 Jvm如何加载类?如何分配空间。

37、 八个基本类型各占多少字节?

38、 HashMap、HashSet、HashTable的区别?

39、 Hashcode和equals

40、 方法重载和重写的区别

41、 进程和线程的区别

42、 junit中before和beforeclass区别

43、 单例手写

44、 触发器的作用是什么?

45、 Static****局部变量与全局变量的区别,编译后映射文件是否包含此类变量的地址?

46、 用JAVA实现一种排序。(要写出具体的算法实现,不要简单的调用Arrays.sort方法)。

47、 Java中如何实现多继承关系?

48、 怎么进行数组排序?

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

50、 请用java代码(或伪代码)实现字符串的反转,如:输入abcde,输出edcba。

面试题答案资料获取方式

加群即可获取 群号:923116658

点击链接加入群聊【Java架构解析】:https://jq.qq.com/?_wv=1027&k=5e1QsXb 、

还有Java工程化、高性能及分布式、高性能、高架构、zookeeper、性能调优、Spring、MyBatis、Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限及相关视频资料

转载于:https://juejin.im/post/5c66b951e51d4506b36bd2e5

Java基础面试题整理-50题(附答案)相关推荐

  1. 2022年python面试题大全(50题附答案)

    前言: 哈喽,哈喽,都说即将到来的金三银四是一年中找工作的高峰期.在这里小编先祝大家都能找到自己心仪的工作! 正文: 这里呢小编整理了一份Python面试题,还有一些招聘信息,今天就分享给大家,希望能 ...

  2. java经典笔试题大全(50道含答案)

    java经典笔试题大全(50道含答案)整理了一套常用的Java笔试题,选择题50道,简答题5道,试试你能做对多少题吧,含答案. 选择题(共50题,每题1.5分,共75分.多选题选不全或选错都不得分.) ...

  3. 5y计算机应用选择题答案,2016年电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料推荐.docx...

    2016年电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料推荐 电大计算机应用基础1一.单选题1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A ...

  4. 5y平台计算机应用测试题,2016电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料.docx...

    2016电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料 电大计算机应用基础1一.单选题1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A A:E ...

  5. java基础面试题共91道含答案(一)

    ** java基础面试题** Java概述 1. 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决 ...

  6. 日常JAVA基础面试题集8(含答案)

    第8章:日常JAVA基础面试题集(含答案) 往期文章  第一章:日常_JAVA_面试题集1(含答案)  第二章:日常_JAVA_面试题集2(含答案)  第三章:日常_JAVA_面试题集3(含答案)   ...

  7. 【笑小枫-面试篇】Java基础面试题整理,努力做全网最全

    写在前面 或许你只是想白嫖内容,或许你也会忽略这段文字,但我还是想弱弱的说 题目整理耗费了大量精力,希望可以给博主点赞收藏,谢谢大家啦 我呢,笑小枫,一个努力的普通人,也希望可以花1秒钟记住我一下 也 ...

  8. java基础面试题整理(BAT)

    转载自:http://www.nowcoder.com/discuss/5949?type=2&order=0&pos=23&page=5点击打开链接 在阿里面试之前总结了一下 ...

  9. Java初级面试题整理 (147题)。

    先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1. Java语言有哪些特点 ...

  10. 【2022版】 Java基础面试题整理(含答案解析)

    介绍 ​本套面试题内容包含:Java.MyBatis.ZooKeeper.Dubbo.Elasticsearch.Memcached. Redis.MySQL.Spring.Spring Boot.S ...

最新文章

  1. 树莓派实现人脸识别需要做的那些事
  2. mysql 同一张表查询_mysql 同一张表查询 left join
  3. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波4 - 分段线性变换 - 对比度拉伸
  4. 飞利浦dicom_如何按计划打开或关闭飞利浦色相灯
  5. Apache Camel 3.1 –更多骆驼核心优化(第3部分)
  6. js如何提高for循环的效率_如何提高rv减速机的散热效率
  7. 安卓手机作为中继器-连接Wifi共享该Wifi给PC和手机
  8. 极客大挑战2020_CTF-Web-[极客大挑战 2019]BabySQL
  9. 赫伯特·西蒙前半生泡妞打架,后半生拿图灵奖、诺贝尔奖,成人工智能大神
  10. PROTEL 99 使用之添加库
  11. unity商店里下载的资源保存路径
  12. Git 之 多人协同开发工作流
  13. 变换AABB的快速算法
  14. 不想用win11了怎么办?一分钟教你win11退回到win10系统
  15. 数字的算法--大数加法
  16. reduceByKey一个巧妙的用法
  17. shell中设置IFS,使用自定义分割符
  18. IDEA插件系列(89):Copy/Paste Stack插件——复制/粘贴工具栈
  19. 小王梦游记五---最美丽的湖
  20. Nginx同一个域名配置多个项目

热门文章

  1. Python画图显示中文
  2. pytest_03_pycharm运行pytest (转:上海悠悠)
  3. 漫画C语言 做个聊天软件你不懂也得懂
  4. 虚拟光驱xp版32位_Windows 32位系统将成历史,勾起了我对Windows XP满满的回忆
  5. Linux 常用的zip压缩和解压命令详解
  6. CPU指令集——AVX2
  7. T5: Linux查看cpu信息,是否支持avx2指令集
  8. python做物联网控制_一步步搭建物联网系统——简单物联网
  9. 小程序轮播图swiper,自定义的指示点
  10. 抖音记事本代码html,抖音上用记事本编写爱心小程序教程