当前位置: 首页 > news >正文

零散的面试题

1.java常见的引用类型

:普通的变量引用

:内存够时,GC不会主动删除,内存不够时,GC会删除

:一旦执行GC就会被删除

:用了感觉没用


2.JDK1.8新特性

  1. lambda表达式(极大简化了匿名内部类的创建,促进函数式编程的风格)
  2. 函数式接口(只能有一个抽象方法的接口 )
  3. 日期时间的新API(LocalDate,LocalTime,LocalDateTime等)
  4. StreamAPI(提供了一种声明式、高效且易于并行化的集合数据处理方式 )
  5. Optional类(处理Null值,防止空指针异常)
  6. 方法引用(更为简洁的lambda表达式,可以直接引用现有方法和构造函数 )
  7. 接口的默认方法和静态方法(可以包含默认方法,允许在接口中提供方法的具体实现,而无需强制实现类去覆盖它 ; 可以包含静态方法,增强接口的功能性)

3.JAVA异常

1.运行时异常(Running Exception)在程序中可以不进行显示处理的异常(ArithmeticException[运算异常] ClassCastException[类型转换异常] IndexOutOfBoundsException[下标越界异常] NullPointerException[空指针异常] IllegalArgumentException[非法参数异常] )

2.检查时异常(Checked Exception)必须显示处理,不然程序不允许代码编译运行.(FileNotFoundException [文件未找到异常]  MalformedURLException[错误的URL异常]  IOException [I/O异常]  SQLException [Sql异常])

3.错误(Error) 系统级别的错误,程序无法处理,会立刻停止运行(OutOfMemoryError[堆空间溢出] StackOverflowError[栈空间溢出])


4.双亲委派

1.启动类加载器(Bootstrap ClassLoader):即根类加载器,负责加载Java虚拟机核心类库,如java.lang.Object等。

2.扩展类加载器(Ext ClassLoader):加载Java扩展类库,如javax或java.util等。

3.应用程序类加载器(Application Class Loader):即系统类加载器,负责搜索应用程序的类路径并加载。

4.自定义类加载器:开发人员可以根据需要实现的类加载器。

 为什么需要双亲委派?

避免类的重复加载 ; 保证安全性(例如java.lang.String,这个类只会加载根类加载器的,避免被覆写)


5.深拷贝浅拷贝?

浅拷贝:对象属性(包含String),复制地址指针;非对象属性复制值。

深拷贝:对象属性直接new一个新的对象。(复制的对象是完全独立的)


  6.设计模式——单例模式?

饿汉式:始终用这一个对象,提前实例化一个对象,不论是否用(会占用空间)

懒汉式:通过DCL(双重检验),只有在需要时才会实例化一个对象,最好加上volatile。(DCL:两次判定,第一次非空判定是否加锁(Synchronization),第二次非空判定是否创建对象,防止其他线程多次创建对象)。

7.详细解释一下Volatile?

保证多线程可见性,确保其他线程操作的数据永远是最新的(极端情况下:当数据已经放入寄存器中,那么其操作的数据就是错误的),极端情况下无法保证原子性。

禁止指令重排,避免在对象未实例化数据便将地址传给其他线程。

相关文章:

  • 揭示西周与汉唐时期的纺织工艺
  • 软件开发小程序正规公司流程是什么样的?
  • node通过axios调用realworld接口
  • 【UE4】角色御剑飞行的蓝图实现
  • 多模态大模型通用模式
  • Vue3、Element Plus使用v-for循环el-form表单进行校验
  • leetcode21 合并两个有序单链表
  • AI大佬都在说下一个爆点是智能体,建议开发者抢占先机!
  • java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统
  • MaxKB-无需代码,30分钟创建基于大语言模型的本地知识库问答系统
  • QT QFileDialog文件选择对话框
  • 第7周作业——单片机定时器与串口通信的学习与应用
  • leetcode打卡#day45 携带研究材料(第七期模拟笔试)、518. 零钱兑换 II、377. 组合总和 Ⅳ、爬楼梯(第八期模拟笔试)
  • 概率论拾遗
  • 【DPDK学习路径】六、申请缓冲区内存池
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Git初体验
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java概述
  • JS笔记四:作用域、变量(函数)提升
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Objective-C 中关联引用的概念
  • Tornado学习笔记(1)
  • Vue 2.3、2.4 知识点小结
  • VuePress 静态网站生成
  • 编写高质量JavaScript代码之并发
  • 第2章 网络文档
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前嗅ForeSpider采集配置界面介绍
  • 驱动程序原理
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 双管齐下,VMware的容器新战略
  • 微信小程序:实现悬浮返回和分享按钮
  • 应用生命周期终极 DevOps 工具包
  • 鱼骨图 - 如何绘制?
  • 关于Android全面屏虚拟导航栏的适配总结
  • 如何用纯 CSS 创作一个货车 loader
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #QT(智能家居界面-界面切换)
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (Matlab)使用竞争神经网络实现数据聚类
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (强烈推荐)移动端音视频从零到上手(上)
  • (学习日记)2024.01.09
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core 2.1路线图
  • .NET 依赖注入和配置系统
  • .NET构架之我见
  • .NET框架