1. 动态代理与cglib实现的区别。

动态代理有两种实现方式,分别是:jdk动态代理和cglib动态代理

jdk动态代理的前提是目标类必须实现一个接口,代理对象跟目标类实现一个接口,从而避过虚拟机的校验。

cglib动态代理是继承并重写目标类,所以目标类和方法不能被声明成final。

==================================================================

  1. 为什么cglib方式可以对接口实现代理。

cglib动态代理是继承并重写目标类,所以目标类和方法不能被声明成final。而接口是可以被继承的。

==================================================================

  1. final的用途。

1.final修饰的对象不能被修改;

2.final修饰的类不能被继承;

3.final修饰的方法不能被重写;

==================================================================

18 如何在父类中为子类自动完成所有的hashcode和equals实现?这么做有何优劣。

父类的equals不一定满足子类的equals需求。比如所有的对象都继承Object,默认使用的是Object的equals方法,在比较两个对象的时候,是看他们是否指向同一个地址。

但是我们的需求是对象的某个属性相同,就相等了,而默认的equals方法满足不了当前的需求,所以我们要重写equals方法。

如果重写了equals 方法就必须重写hashcode方法,否则就会降低map等集合的索引速度。

==================================================================

  1. 请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。

OO设计理念:封装、继承、多态

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。所以我们可以通过public、private、protected、default 来进行访问控制

关键字类内部本包子类外部包

public √√√√

protected√√√×

default √√××

private√×××

java访问控制符的含义和使用情况

==================================================================

  1. 深拷贝和浅拷贝区别。

浅拷贝只拷贝指针,深拷贝就是拷贝他的值,重新生成的对像。

==================================================================

  1. error和exception的区别,CheckedException,RuntimeException的区别。

Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。 Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。Exception又分为运行时异常,受检查异常。 RuntimeException(运行时异常),表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常。 CheckedException(受检查异常),是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。

==================================================================

  1. 请列出5个运行时异常。

NullPointerException

IndexOutOfBoundsException

ClassCastException

ArrayStoreException

BufferOverflowException

==================================================================

  1. 在自己的代码中,如果创建一个java.lang.String对象,这个对象是否可以被类加载器加载?为什么。

不可以,双亲委派模式会保证父类加载器先加载类,就是BootStrap(启动类)加载器加载jdk里面的java.lang.String类,而自定义的java.lang.String类永远不会被加载到

==================================================================

  1. 说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法。

父类的equals不一定满足子类的equals需求。比如所有的对象都继承Object,默认使用的是Object的equals方法,在比较两个对象的时候,是看他们是否指向同一个地址。

但是我们的需求是对象的某个属性相同,就相等了,而默认的equals方法满足不了当前的需求,所以我们要重写equals方法。

如果重写了equals 方法就必须重写hashcode方法,否则就会降低map等集合的索引速度。

==================================================================

  1. 在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。==================================================================

  1. 有没可能 2个不相等的对象有同hashcode。

有可能,最简单的方法,百分百实现的方式就是重写hascode();

==================================================================

  1. Java中的HashSet内部是如何工作的。

public HashSet() {

map = new HashMap<>();}

默认使用的是HaseMap;

==================================================================

30什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。

序列化是一种用来处理对象流的机制 ,所谓对象流就是将对象的内容进行流化。

序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》(第3版)电子版书籍。也可以加群:712263501领取海量学习资料进行学习。

Java面试之Java基础下册(含答案)相关推荐

  1. 精选 2021 年大厂高频 Java 面试真题集锦(含答案),面试一路开挂

    本文涵盖了阿里巴巴.腾讯.字节跳动.京东.华为等大厂的 Java 面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同样 ...

  2. 精选2022年大厂高频Java面试真题集锦(含答案),面试一路开挂

    本文涵盖了阿里巴巴.腾讯.字节跳动.京东.华为等大厂的Java面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同样会研 ...

  3. 精选历年大厂高频Java面试真题集锦(含答案),助力面试一路开挂

    秋招接近尾声,最近接二连三收到一些朋友的喜讯,求职和跳槽都有很不错的结果.虽然总说今年情况不太好,但还是有一部分成功上岸的,和大家分享一个典型例子:学弟工作一年半,薪资9K出头,最开始目标是跳槽到货拉 ...

  4. 【面试】Java面试常见问题汇总(不含答案)、面试指导学习笔记

    面试常见问题角度 String是基本数据类型吗? int和Integer有什么区别? HashMap和HashTable的区别,及其实现原理. ArrayList/HashMap的源码.如何实现源码 ...

  5. [Java面试三]JavaWeb基础知识总结.

    [Java面试三]JavaWeb基础知识总结. 1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Int ...

  6. 去腾讯等BAT面试完的Mysql面试55题总结,含答案大赠送!

    [BAT面试:mysql 面试55题] 1.一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还 ...

  7. 32位计算机通常是指控制总线,“三校生”对口升学计算机应用试卷计算机基础知识(含答案)...

    "三校生"计算机应用基础试卷(含答案) 课程名称:计算机应用基础 题 五 六 总分 统分 号 一 二 三 四教师 得 分 :名一.是非选择题(对的选A,错的选B.本大题共15小题, ...

  8. very very good,Java面试宝典+Java核心知识集

    这几天刚整理出炉的两份最全"Java面试宝典+Java核心知识集"(very very good!!!),因此有了今天咱这篇文章,没错,我又来分享干货了!!! Java面试宝典 说 ...

  9. 微型计算机主存可以分为,计算机基础试题 (含答案)

    计算机基础试题 (含答案) 一.填空题(每空1分,共30分) 1.计算计的软件系统通常分成______软件和______软件. 2.字长是计算机______次能处理的______进制位数. 3.1KB ...

  10. 量子计算机的核心元件简称,计算机文化基础复习题(含答案).doc

    计算机文化基础复习题(含答案)整理 计算机文化基础复习题第一套 一.单项选择题(每题1分,共30分) 1.在Powerpoint2003中,若为幻灯片中的对象设置"驶入效果",应选 ...

最新文章

  1. html实现让电脑断网的功能,13. Electron 断网提醒功能的实现
  2. 如何开启/关闭SMTP路由调试
  3. 用户认证-什么是认证
  4. [蓝桥杯][2018年第九届真题]全球变暖(DFS)
  5. P1020 导弹拦截(n*log n时间的最长上升子序列思想)
  6. Linux学习Vim使用及账号用户管理
  7. Microsoft Office Visio 2007 免费下载
  8. vue地址栏输入路由跳转到首页_vue 路由跳转四种方式 (带参数)
  9. 计算机aero背景黑,win7系统如何打开和关闭Aero特效
  10. php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)
  11. Blender 常用快捷键记录 (二)
  12. T0.Games欢迎高端加密NFT入驻
  13. Linux上搭建ElasticSearch-8.x集群以及安装Kibana(保姆级安装教程)
  14. mc服务器文件夹改皮肤,我的世界皮肤放在哪个文件夹位置及更换方法解析
  15. java web 站内信 设计
  16. 如何进行隐私协议测试
  17. mysql-5.7.27-winx64 安装教程
  18. 如何使用Java来发送企业邮箱,并设计收到邮件的样式
  19. 新视野大学英语第三版读写教程(四)Unite 4 Midterm test answer
  20. Android能够获取到唯一的设备ID吗?

热门文章

  1. 2021年大数据Spark(七):应用架构基本了解
  2. Python:数据集成
  3. 你哪来这么多事(大结局):职工信息删除
  4. python xlrd 的merged_cells 里面四个参数的含义
  5. The method setButton(int, CharSequence, Message) in the type AlertDialog is not applicable for the a
  6. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP
  7. Single Image Dehazing via Conditional Generative Adversarial Network(CVPR2018-图像去雾)
  8. App Store兼容性问题
  9. MySQL主主配置说明
  10. C语言计算e1 1/1! 1/2!,c语言程序填空 下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+…(1+1/2...