【面试准备】Java基础部分,2024年最新阿里面试需要多久

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

&和&&都是逻辑运算符,当运算符两边的表达式的结果都为true时,结果才为true,否则,只要有一方为false,则结果为false。

&&具有短路功能,即如果第一个表达式为false,则不再计算第二个表达式。

&没有短路功能,即如果第一个表达式为false,仍会计算第二个表达式。

4.在JAVA中如何跳出当前的多重嵌套循环?

在循环语句外定义一个标号,然后在循环体内break 标号,就可以跳出了。

ok:

for(int i=0;i<10;i++) {

for(int j=0;j<10;j++) {

System.out.println(“i=” + i + “,j=” + j);

if(j == 5) break ok;

}

}

5.在switch语句中,表达式的类型可以是哪些?

在java中switch后的表达式的类型

JDK 1.6:byte、short、char、int

JDK 1.7:byte、short、char、int、String

6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

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

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

8.用最有效率的方法算出2乘以8等於几?

2 << 3,相当于乘以了2的n次方。

9.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:

final StringBuffer a=new StringBuffer(“immutable”);

执行如下语句将报告编译期错误:

a=new StringBuffer(“”);

但是,执行如下语句则可以通过编译:

a.append(" broken!");

10. “==”和“equals()”的区别

“==”:判断的是两个字符串对象在内存中的首地址是否相等。

“equals()”:判断的是两个字符串对象的值是否相等。

11. 静态变量和实例变量的区别?

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

静态变量使用类去调用,而实例变量通过创建实例对象去调用。

12. 是否可以从一个static方法内部发出对非static方法的调用?

不可以,必须创建对象来调用。

13. Integer与int的区别

Integer是int的封装类,Integer的默认是是null,int的默认值是0。

14. Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

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

作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

16. Overload和Override的区别

重载:

同一类,方法名相同,参数列表(参数个数或参数类型)不同,与方法返回值和修饰符无关。

重写:

方法名相同,参数列表相同,返回值类型相同(或是其子类)、访问修饰符不能严于父类。

17. 构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

18. 接口和抽象类的区别?

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承

(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

19. 面向对象的特征有哪些方面?

面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。

20. java中实现多态的机制是什么?

1、子类继承父类(extends)

2、类实现接口(implements)

21. 内部类可以引用它的包含类的成员吗?有没有什么限制?

完全可以。如果不是静态内部类,那没有什么限制!

22. String是最基本的数据类型吗?

不是,java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

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

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 “Hello”,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

24. String s = new String(“xyz”);创建了几个String Object? 二者之间有什么区别?

两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

25. String、StringBuffer、StringBuilder有什么区别?

String是一个不可变的字符串,

StringBuffer和StringBuilder是可变的字符串。

StringBuffer是线程安全的,StringBuilder是非线程安全的。

StringBuilder的速度比StringBuffer的速度要快。

26. 数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。String有有length()这个方法。

27. 下面这条语句一共创建了多少个对象:String s=“a”+“b”+“c”+“d”;

1个对象。

String s = “a” + “b” + “c” + “d”; System.out.println(s == “abcd”);

最终打印的结果应该为true。

28. 运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

29. error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

30. 请写出你最常见到的5个runtime exception。

NullPointerException,ArrayIndexOutOfBoundsException,ClassCastException,SQLException,FileNotFoundException,IOException …

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

throws是获取异常

throw是抛出异常

try是将会发生异常的语句括起来,从而进行异常的处理,也可以在try块中抛出新的异常

catch是如果有异常就会执行他里面的语句

finally不论是否有异常都会进行执行的语句

32. JAVA中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

①继承Thread类,并重写run方法

②实现runnable接口,重写run方法

用synchronized关键字修饰同步方法。

stop()不安全。

suspend()容易发生死锁。

33. sleep() 和 wait() 有什么区别?

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

33. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

最后

笔者已经把面试题和答案整理成了面试专题文档

image

image

image

image

image

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
13441947827)]

[外链图片转存中…(img-MC8j5JaG-1713441947827)]

[外链图片转存中…(img-v3My3dZH-1713441947827)]

[外链图片转存中…(img-Px54Zjqn-1713441947827)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-mMEbgr08-1713441947828)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值