2021 最新 Java 面试真题解析!1
前言:
金九银十过了金三银四还会远嘛,本文后面分享面试题给正准备跳槽,准备找工作的你,这次面试字节跳动也是做了很多的准备,还好顺利拿到了 offer,特分享一下这次的 4 面技术面真题,可能有些记不全了,但多少也能够给一些正在面试字节或计划面试字节的朋友提供帮助。
之前学校活动有去过字节跳动公司总部参观,所以一直以来就蛮想进入字节工作的,被字节的企业文化和工作氛围所影响。字节作为发展速度最快的互联网公司,旗下的很多产品的用户都比肩 BAT 了,所以自己也算是字节的死忠粉了。
这次字节跳动的面试,给我的感触很深,意识到基础的重要性,这次字节共 4 面技术面+HR 面
可见 str1 str2 并不是同一个对象 所以第一个判断输出 false
而第二个 equals 方法在子类中重写之后就不判断地址是否相等(是否为同一个对象)了 只去关注内容是否相等!
所以输出 true
注意下面这一条注意事项哦!
4.equals 方法课堂练习
练习重写 equals 方法
回头要记得来练习哦~一共有三道练习题
【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩
小练
【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_
之后在讲 Hash 表相关结构的时候要用到这个方法~
想学好hashCode
的底层 需要用到集合的知识 所以我们先学习下hashCode
表面的知识
1.方法用途
返回该对象的哈希码值
支持此方法是为了提高哈希表(eg:
java.util.Hashtable
提供的哈希表)的性能
老韩给出的几个小结——
【1】提高具有哈希结构的容器的效率
【2】两个引用如果指向的是同一个对象 那么哈希值肯定是一样的
【3】两个引用如果指向的不是同一个对象 那哈希值就不一样咯~
【4】哈希值是根据地址给分配的一个特殊的值 并不是等价于地址哦!(之前在数据结构中学过哈希表的同学有没有点儿印象~)
【5】案例演示 测试一下几个对象的地址值是否相同
结果如下:
【6】后面在讲集合的时候 如果需要的话 也会重写 hashCode
到时候还会提到的哦~
默认(也就是 Object 中的
toString
方法)返回 “全类名(包名+类名) + @ + 哈希值的十六进制”
而子类往往会重写
toString
方法 用于返回对象的属性信息
比如 String 类中 这个方法就会返回对象的字符串表示~
来举个例子
然后来测试下 Object 类的toString
方法——
重写下toString
方法试试——
这时候调用toString
方法就可以输出对象的属性了
直接输出一个对象的时候 toString
方法会被直接调用
嗯是的
就是这么个神奇的规则!
对象被回收时 系统自动调用该对象的 finalize 方法
子类可以重写该方法 做一些释放资源的操作
对象什么时候被回收?
正如上面所说
对象没有任何引用时 jvm
就认为这个对象是一个垃圾对象 就会使用垃圾回收机制来销毁该对象 比如:
销毁该对象前 会先调用 finalize 方法
我们可以重写这个方法哦~
举个例子——
但是我们在运行方法之后会发现并没有输出以上的语句
【???】
这是因为垃圾回收器并不是时时刻刻在监控 一有一个垃圾就去回收!这样效率很低啦~
而这个垃圾回收机制是很复杂的 我们后面再去讲
我们可以通过 System.gc()
主动触发垃圾回收机制
像是呼叫保洁阿姨的操作
一般来说阿姨会过来帮你打扫垃圾
但是也有一定几率阿姨不过来~
主动触发之后 可以看到重写的 finalize 方法被调用了
小结
实际开发中 我们几乎不会运用 finalize 方法
所以——
学这个更多就是为了应付面试 QAQ
当然了 还是要学的哈!
============================================================================
开发中 查找错误的时候 用断点调试一步步地看源码执行的过程 从而发现错误所在!
重要提示 断点调试的过程中 是运行状态 所以方法是根据对象的运行类型来执行的
断点调试的步骤
在程序的某一行设置一个断电 调试时 程序运行到这一行就会停住
然后我们可以一步步地往下调试 调试过程中可以看到各个变量当前的值
出错的话 调试到出错的代码行即显示错误
我们停下并进行分析 就可以找到这个 Bug 了~
断点调试是程序员必须掌握的技能
而且除了 Debug 这个功能 断点调试也可以帮助我们查看 java 底层源代码的执行过程 提高程序员的 Java 水平
二刷课程的时候一步步地跟着做嗷~
【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_
为啥我多态之后这里的课程练习都不做了呢
一个是因为假期想快速过一下课程
还有一个就是假期在家没有双屏 IDEA 和视频共存超级难受啦!
我们二刷见!
最后
现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。
所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份 Java 并发体系思维导图,希望对你有所帮助。
评论