金三银四跳槽季,java面试突击(100题)进大厂就这么简单

这篇博客详细解答了Java面试中的常见问题,包括面向对象思想、JDK与JRE的区别、基本数据类型、字符串相关、数据结构与算法、多线程和并发等内容。通过这些问题,帮助读者深入理解Java编程,提升面试技能,轻松应对大厂面试挑战。
摘要由CSDN通过智能技术生成

1、谈谈对面向对象思想的理解

首先,谈谈“面向过程”vs“面向对象”

我觉得这两者是思考角度的差异,面向过程更多是以“执行者”的角度来思考问题,而面向对象更多是以“组织者”的角度来思考问题,举个例子,比如我要产生一个0-10之间的随机数,如果以“面向过程”的思维,那我更多是关注如何去设计一个算法,然后保证比较均衡产生0-10的随机数,而面向对象的思维会更多关注,我找谁来帮我们做这件事,比如Random类,调用其中提供的方法即可。

所以,面向对象的思维更多的是考虑如何去选择合适的工具,然后组织到一起干一件事。

好比一个导演,要拍一场电影,那么首先要有男猪脚和女猪脚,然后还有其他等等,最后把这些资源组织起来,拍成一场电影。

再说回我们的程序世界,这个组织者的思维无处不在,比如,我们要开发项目,以三层架构的模式来开发,那么这个时候,我们不需要重复造轮子,只需要选择市面上主流的框架即可,比如SpringMVC,Spring,MyBatis,这些都是各层的主流框架。

2、JDK、JRE和JVM有什么区别?

JDK:Java Development Kit,Java开发工具包,提供了Java的开发环境和运行环境。

包含了编译Java源文件的编译器Javac,还有调试和分析的工具。

JRE:Java Runtime Environment,Java运行环境,包含Java虚拟机及一些基础类库

JVM:Java Virtual Machine,Java虚拟机,提供执行字节码文件的能力

所以,如果只是运行Java程序,只需要安装JRE即可。

另外注意,JVM是实现Java跨平台的核心,但JVM本身并不是跨平台的,不同的平台需要安装不同的JVM

3、Java的基本数据类型

boolean,byte,char,short,int,long,float,double

注意:String是引用类型

4、==和equals的区别

== 比较的是值

比较基本的数据类型,比较的是数值

比较引用类型:比较引用指向的值(地址)

equals

默认比较也是地址,因为这个方法的最初定义在Object上,默认的实现就是比较地址

自定义的类,如果需要比较的是内容,那么就要学String,重写equals方法

代码案例:测试以下的每道题,你是否能够正确得到答案?

String s1 = new String("zs");
String s2 = new String("zs");
System.out.println(s1 == s2);//false
String s3 = "zs";
String s4 = "zs";
System.out.println(s3 == s4);//true
System.out.println(s3 == s1);//false
String s5 = "zszs";
String s6 = s3+s4;
System.out.println(s5 == s6);//false
final String s7 = "zs";
final String s8 = "zs";
String s9 = s7+s8;
System.out.println(s5 == s9);//true
final String s10 = s3+s4;
System.out.println(s5 == s10);//false

5、final的作用

final修饰类,表示类不可变,不可继承。比如,String,不可变性

final修饰方法,表示该方法不可重写。比如模板方法,可以固定我们的算法

final修饰变量,这个变量就是常量

注意:

修饰的是基本数据类型,这个值本身不能修改

修饰的是引用类型,引用的指向不能修改

比如下面的代码是可以的

final Student student = new Student(1,"Andy");
student.setAge(18);//注意,这个是可以的!

6、String s = "java"与String s = new String("java")

String s = "java";

String s = new String("java");

这两者的内存分配方式是不一样的。

第一种方式,JVM会将其分配到常量池,而第二种方式是分配到堆内存

7、String,StringBuffer,StringBuilder区别

String 跟其他两个类的区别是

String是final类型,每次声明的都是不可变的对象,
所以每次操作都会产生新的String对象,然后将指针指向新的String对象。

StringBuffer,StringBuilder都是在原有对象上进行操作

所以,如果需要经常改变字符串内容,则建议采用这两者。

StringBuffer

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建议阅读本文档的方式 本文档提供详细的目录,建议大家使用电脑阅读。如果大家用手机阅读的话,可以下载一个不错的PDF阅读器,比如 很多人常用的福昕PDF阅读器。 本文档提供详细的目录,大家可以根据自己的实际需要选择自己薄弱的知识章节阅读。 前言 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有 章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1. 自我介绍。(你可千万这样介绍:“我叫某某,性别,来自哪里,学校是那个,自己爱干什么”,记住:多说点简 历上没有的,多说点自己哪里比别人强!) 2. 自己面试中可能涉及哪些知识点、那些知识点是重点。 3. 面试中哪些问会被经常问到、面试中自己改如何回答。(强烈不推荐背,第一:通过背这种方式你能记住多 少?能记住多久?第二:背的方式的学习很难坚持下去!) 4. 自己的简历该如何写。 “80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部 分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万 不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来 越强大。 另外,大家要明确的很重要的几点是: 1. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方; 2. 大部分应届生找工作的硬伤是没有工作经验或实习经历; 3. 将自己的项目经历完美的展示出来非常重要。 笔主能力有限,如果有不对的地方或者和你想法不同的地方,敬请雅正、不舍赐教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值