长乐住房和城乡建设局网站,wordpress文章伪静态,河北建设工程有限公司,门户网站管理建设本文已经收录到Github仓库#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点#xff0c;欢迎star~
Github地址#xff1a;https://github.com/…本文已经收录到Github仓库该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点欢迎star~
Github地址https://github.com/Tyson0314/Java-learning 面试开始
面试官看你简历上写了Java基础扎实来考考你Java相关的知识
面试官Java有哪些特点呢
大彬嗯首先Java是一门面向对象的编程语言。
大彬第二Java具有平台独立性和移植性。
大彬Java有一句口号Write once, run anywhere一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机。
大彬第三Java具有稳健性。
大彬Java是一个强类型语言它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明保证编译程序能捕捉调用错误这就导致更可靠的程序。
面试官嗯那面向对象和面向过程有什么区别呢
大彬嗯面向对象和面向过程是一种软件开发思想。
大彬面向过程就是分析出解决问题所需要的步骤然后用函数按这些步骤实现使用的时候依次调用就可以了。
大彬面向对象是把构成问题事务分解成各个对象分别设计这些对象然后将他们组装成有完整功能的系统。面向过程只用函数实现面向对象是用类实现各个功能模块。
大彬以五子棋为例面向过程的设计思路就是首先分析问题的步骤如下
大彬1、开始游戏2、黑子先走3、绘制画面4、判断输赢5、轮到白子6、绘制画面7、判断输赢8、返回步骤29、输出最后结果。
大彬把上面每个步骤用分别的函数来实现问题就解决了。
大彬而面向对象的设计则是从另外的思路来解决问题。
大彬整个五子棋可以分为黑白双方棋盘系统负责绘制画面规则系统负责判定诸如犯规、输赢等。
大彬黑白双方负责接受用户的输入并告知棋盘系统棋子布局发生变化棋盘系统接收到了棋子的变化的信息就负责在屏幕上面显示出这种变化同时利用规则系统来对棋局进行判定。
面试官好说说面向对象有哪些特性
独白八股文…
大彬面向对象四大特性封装继承多态抽象
大彬封装就是将类的信息隐藏在类内部不允许外部程序直接访问而是通过该类的方法实现对隐藏信息的操作和访问。 良好的封装能够减少耦合。
大彬继承是从已有的类中派生出新的类新的类继承父类的属性和行为并能扩展新的能力大大增加程序的重用性和易维护性。在Java中是单继承的也就是说一个子类只有一个父类。
大彬多态是同一个行为具有多个不同表现形式的能力。在不修改程序代码的情况下改变程序运行时绑定的代码。实现多态的三要素继承、重写、父类引用指向子类对象。
大彬抽象。把客观事物用代码抽象出来。
面试官嗯知道同步和异步的概念吗讲讲他们的区别
大彬同步是发出一个调用时在没有得到结果之前该调用就不返回。
大彬异步是在调用发出后被调用者返回结果之后会通知调用者或通过回调函数处理这个调用。
面试官那阻塞和非阻塞有什么区别
独白果然会问这个…
大彬阻塞和非阻塞关注的是线程的状态。
大彬阻塞调用是指调用结果返回之前当前线程会被挂起。调用线程只有在得到结果之后才会恢复运行。
大彬非阻塞调用指在不能立刻得到结果之前该调用不会阻塞当前线程。
大彬举个例子同步是烧开水要自己来看开没开异步就是水开了然后水壶响了通知你水开了回调通知。
大彬阻塞是烧开水的过程中你不能干其他事情必须在旁边等着非阻塞是烧开水的过程里可以干其他事情。
面试官不错理解的挺到位
面试官再问一个问题如果两个对象的hashCode()相同那么equals()是否也一定为 true
大彬不一定哦。
大彬equals与hashcode的关系如下
大彬如果两个对象调用equals比较返回true那么它们的hashCode值一定要相同
大彬如果两个对象的hashCode相同它们并不一定相同。
大彬hashcode方法主要是用来提升对象比较的效率先进行hashcode()的比较如果不相同那就不必在进行equals的比较这样就大大减少了equals比较的次数当比较对象的数量很大的时候能提升效率。
面试官可以今天面试就到这吧 最后给大家分享一个Github仓库上面有大彬整理的300多本经典的计算机书籍PDF包括C语言、C、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等可以star一下下次找书直接在上面搜索仓库持续更新中~ Github地址https://github.com/Tyson0314/java-books