每天演好一个情绪稳定的成年人
筒子们,30+的还在上班的真的不容易了,上有老下有小,还要应付卷王来袭,可算是再是好汉也双拳难敌四手;
不过可能到了40+的时候,就会变成有班上的真的不易了,哎,码农们,让我们携手共进~,祝君早日到达幸福彼岸,财富自由~
JAVA中你必须知道的内容
筒子们,开始补课,还请各位重踩(共勉)一波~
讲讲你对JAVA语言的理解
平台无关性(不如说生态强大);
封装/继承/多态(面向对象开发);
了解JIT、AOT吗
套路你JAVA版本特性呢;
Java是编译与解释共存的语言,想想它是怎么运行的?首先写一份.java文件,然后通过javac将.java文件编译为.class文件,最终由jvm将.class文件解释为机器码用来程序执行使用;
JIT是哪个版本支持的呢?EMO了,筒子们知道不?6/7/8?都不是,人家从开头1版本就支持JIT运行时编译的能力了~
AOT是哪个版本支持的呢?是9版本新出的,意思是说跳过了编译的动作,直接将.java文件解释为机器码了~
那筒子们,是不是9以后都用AOT了啊,毕竟感觉效率更高了,其实不是的,类似很多根据字节码二次改造的技术(动态代理)都是基于.class文件进行调整的,这个时候全部AOT了以后就会导致这部分能力的缺失,所以JVM给到的解决方案也是JIT与AOT的组合
JAVA与C++的区别
JAVA不提供指针来操作内存,程序更加安全
Java不支持多重继承,C++支持多继承
Java垃圾回收器自动处理内存释放,C++需要开发手动处理
浮点数可以用来数值计算吗
不可以哈,你可以认为所有的数值计算动作,必须使用专业的工具类BigDecimal来处理,其它类型均不适合做数值计算
浅拷贝与深拷贝的区别
浅拷贝:仅创建了一个新的对象,其中的属性如果也是引用类型,并没有重新创建并赋值,而是使用了原属性值
深拷贝:从里到外全部是新的~
equals与==的区别
==:基础数据类型比较的是值;引用数据类型比较的是内存地址
equals:重写了equals则比较的是属性值;未重写equals则比较的是内存地址
字符串拼接 + 与 StringBuilder区别
for循环外无区别,JVM默认会把 "a" + "b"生成为new StringBuilder("a").append("b")
for循环里,JVM会生成多个new String("a")/new String("b")字符串,然后将字符串给拼接起来~
Exception和Error区别
父类:Throwable
Exception:可检查型异常(IOException),不可检查型异常(ClassCastException)
Error: 未知异常(OutOfMemoryException)
try-catch中的finally一定会被调用吗
理论上是一定会被调用的,但是谁也说不准在程序运行的过程中,线程死掉了,那可就不一定能走到finally里了~,比方说大名鼎鼎的system.exit(1)
如何避免属性值被序列化处理
修饰符:transient、static
序列化是将JAVA对象转换为二进制流的动作;反序列化是将二进制流转化为对象~本质上都是方便数据的持久化与重放
步一小结
哎,小基础,这些如果有不知道的~请自行检讨一波~