面试官问了我几道Java基础没答上来

文章目录

  • 面试官问了我几道Java基础没答上来
    • 1、面向对象的三大特性,分别解释下?
    • 2、说到多态,再来说下方法重载和重写的区别?
    • 3、Java是面向对象的语言,那创建对象的几种方式简述下?
    • 4、静态变量和实例变量有啥区别?
    • 5、问一下数据类型,Integer和int的区别?(有缓存是-128到127)
    • 6、谈到包装数据类型和基本数据类型,装箱和拆箱有啥区别?
    • 7、谈一下关键字吧,final、finally、finalize的区别
    • 8、说到比较,就要扯出== 和equals的区别了,请你说下
    • 9、经常重写equals(),为什么一定要重写hashCode()方法
    • 10、上面答的不错,最后一个简单问题,&和&&有啥区别?

1、面向对象的三大特性,分别解释下?

  1. 封装:把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口
  2. 继承:从已有类得到继承信息创建新类的过程,父类(超类/基类):提供继承信息的类,子类(派生类):得到继承信息的类。
  3. 多态:编译时多态(方法重载)和运行时多态(方法重写),实现多态需要两件事:一是子类继承父类类并重写父类中的方法,二是用父类型引用子类型对象,这样同样的引用的调用同样的方法就会根据子类对象的不同而表现出不同的行为。

2、说到多态,再来说下方法重载和重写的区别?

  1. 重载:编译时多态、同一个类中同名的方法有不同的参数列表、不能根据返回类型进行区别(因为:函数调用时不能指定类型信息,编译器不知道你要调哪个函数);
  2. 重写(覆盖):运行时多态、子类与父类之间、子类重写父类的方法具有相同的返回类型、更好的访问权限。

3、Java是面向对象的语言,那创建对象的几种方式简述下?

  1. 使用new关键字;
  2. 使用class类的newInstance方法,该方法调用无参的构造器创建对象(反射):Class.forName.newInstance();
  3. 使用clone()方法;
  4. 反序列化,如调用ObjectInputStream类的readObject()方法。

4、静态变量和实例变量有啥区别?

静态变量:被static修饰的变量,也叫类变量,属于类,不管创建多少个对象,静态变量在内存中有且仅有一个拷贝,静态变量可以实现多个对象共享内存。

实例变量:属于某一实例,需要先创建对象,然后通过对象才能访问它。

5、问一下数据类型,Integer和int的区别?(有缓存是-128到127)

  1. int是Java的八大基本数据类型之一,Integer是Java为int类型提供的封装类;
  2. int默认为0,Integer默认为null,方便区分Integer未赋值和值为0的区别;
  3. Integer必须实例化后才能使用,int不需要

6、谈到包装数据类型和基本数据类型,装箱和拆箱有啥区别?

自动装箱:Java编译器在基本数据类型和对应的包装类之间做的一个转化,如:int 转化Integer,double转化Double等。

自动拆箱:Java编译器在包装类和对应的基本数据类型之间做的一个转化,

7、谈一下关键字吧,final、finally、finalize的区别

final:声明属性、方法、和类,分别表示属性不可变、方法不可覆盖、被其修饰的类不可继承;

finally:异常处理语句结构的一部分,表示总是执行;

finalize:Object类的一个方法我,在垃圾回收时会调用被回收对象的finalize.

8、说到比较,就要扯出== 和equals的区别了,请你说下

==

  • 比较的对象是基本数据类型,比较数值是否相等
  • 比较的对象是引用数据类型,比较对象的地址值是否相等

equals方法

用来比较两个对象内容是否相等,equals方法不能用于比较基本数据类型的变量;

没有对equals方法进行重写:比较的是引用类型的变量所指向的对象的地址

对equals方法进行重写:如String、Integer把它变成值比较(一般equals比较的是值是否相等)

9、经常重写equals(),为什么一定要重写hashCode()方法

两个相等的对象的hashCode值必须相等

如果重写equals()时没有重写hashCode()方法的话会导致equals方法判断是相等的两个对象,hashCode值却不相等

总结

  • equals 方法判断两个对象是相等的,那这两个对象的 hashCode 值也要相等。
  • 两个对象有相同的 hashCode 值,他们也不一定是相等的(哈希碰撞)。

10、上面答的不错,最后一个简单问题,&和&&有啥区别?

相同点:&&和&都是表示与的逻辑运算符,表示and,两边表达式都是true,整个运算结果才为true,否则为false

不同点
&&:有短路功能,当第一个表达式的值为false的时候,不再计算第二个表达式

&:不管第一个表达式结果是否为true,第二个都会执行,&可以用作位运算符:当&两边的表达式不是boolean类型的时候,&表示按位操作。

面试官问了我几道Java基础没答上来相关推荐

  1. 面试官问你HTTP状态码,你敢答吗?

    2021.04.19 更新,添加对 304 状态码的描述. 前言 HTTP状态码的作用是告知客户端,从服务器端返回的请求结果.听说面试会问HTTP状态码,相比那些神仙操作,这个记忆性的知识点准备起来比 ...

  2. java面试没有全部答对_十道java基础面试题,你能保证全答对吗?

    java初级开发面试中经常被问到的问题有好多,下面总结一下常见的问题,先给问题,大家思考一下再看答案. 1.JDK 和 JRE 有什么区别?2.== 和 equals 有什么区别?3.说说final在 ...

  3. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  4. 面试官问:为什么 Java 线程没有Running状态?我懵了

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 title: 面 ...

  5. 【020期】面试官问:Java 遍历 Map 集合有几种方式?效率如何?

    >>号外:关注"Java精选"公众号,回复"2021面试题",领取免费资料!"Java精选面试题"小程序,3000+ 道面试题在 ...

  6. 面试官问:为什么 Java 线程没有 Running 状态?我懵了

    转载自 面试官问:为什么 Java 线程没有 Running 状态?我懵了 什么是 RUNNABLE? 与传统的ready状态的区别 与传统的running状态的区别 当I/O阻塞时 如何看待RUNN ...

  7. 冒泡排序java代码_面试官问我插入排序和冒泡排序哪个更牛逼?

    (给算法爱好者加星标,修炼编程内功) 来源:小鹿动画学编程,作者:小鹿同学 写在前边 排序对于每个开发者来讲,都多多少少知道几个经典的排序算法,比如我们之前以动画形式分享的冒泡排序,也包括今天要分享的 ...

  8. 【059期】面试官问:序列化是什么,为什么要序列化,如何实现?

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  9. 【154期】面试官问:请你说说 B 树、B+ 树的原理及区别?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方留言必回,有问必答! 每天 08:35 更新文章,每天进步一点点... 之前在 ...

最新文章

  1. 深入剖析MobileNet和它的变种
  2. 分贝dB与放大倍数的转换关系
  3. 计算机网络:三层ISP结构
  4. Winform中实现仿XP系统的任务栏菜单效果(附代码下载)
  5. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?
  6. 理解Windows内核模式与用户模式
  7. OGEngine基于java支持跨平台的手游开发开源引擎
  8. Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解...
  9. python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件
  10. 如何在opengl用代码绘制英文_如何用AIPS直接绘制服装款式图(线稿)
  11. 信用卡逾期了还能网上贷款吗?
  12. 项目经理如何确保工程质量
  13. CPU究竟是如何执行任务的?
  14. AR:Unity与iOS交互(入门篇)
  15. Unicode字符编码分布表――语言文字类
  16. 解决photoshop cc在4K分辨率下字体过小。
  17. 浮点数I-EEE规范
  18. turf.js字典——查询turf库的所有方法及用途
  19. 从零点一开始机器学习之晦涩难懂的各种概念
  20. 计算机专业补课,计算机老师坚持五年每天免费为孩子补习语数外

热门文章

  1. 移动端开发工程师的AI突围之路
  2. 实时指令控制继电器(树莓派)
  3. 最新MT6589 GPIO应用设计资料下载
  4. com.nablac0d3.SSLKillSwitch2_0.11.deb
  5. 根据工厂日历自动计算请假时间
  6. 实战 | AdaBoost算法
  7. [zz] 腾讯云 AV1落地
  8. windows检测电脑硬盘健康的工具
  9. 《用两天学习光线追踪》3.球体和表面法向量
  10. 727665503骗子 出售winmydns的骗子 dnscdn@qq.com(727665503)