2022春招面试指南:Java岗位基础篇(适用于各大企业招聘Java初级工程师岗位,附配套MD文档)_哔哩哔哩_bilibili

1.JDK1.8的新特性

- Lamda表达式

- 接口中新增默认方法和静态方法

- Stream API

- 新时间日期API

- 方法

2. 自定义异常在Java中如何运用,如何自定义异常?

- 系统中有些错误符合语法,但不符合业务逻辑

- 在分层的软件结构中,通常是在表现层表示统一对系统其他层次的异常进行捕获处理

自定义异常:自定义编译时异常.a.定义一个异常类继承Exception.b.重写构造器。c.在出现异常的地方用throw new 自定义对象抛出!编译时异常是编译阶段就报错,提醒更加强烈,一定需要处理!!自定义运行时异常.a.定义一个异常类继承RuntimeException.b.重写构造器。c.在出现异常的地方用throw new 自定义对象抛出!提醒不强烈,编译阶段不报错!!运行时才可能出现!!

3.怎样声明一个类不会被继承,什么场景下会用?

用final修饰,类不会被继承

如果类中的所有方法没有重写的需要,当前类没有子类也罢

比如Math类

4.HashMap为什么要使用红黑树?

红黑树(Red Black Tree) 是一种自平衡二叉查找树
>二叉查找树->左小右大的二叉树
>二叉树->节点的度不大于2的有序树
>>①非黑即红②根黑③叶黑④红黑相间⑤到叶同黑1.节点是RED或者BLACK2.根节点是BLACK3.叶子节点(外部节点,空节点)都是BLACK4.RED节点的子节点都是BLACK,RED节点的parent都是BLACK(从根节点到叶子节点的所有路径上不能有2个连续的RED节点)5.从任一节点到叶子节点的所有路径都包含相同数目的BLACK节点

在JDK1.8版本后,java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度

红黑树查找,插入,删除的时间复杂度最坏为o()

链表查找,插入,删除的时间复杂度最坏为o(n)

5.Java的异常处理机制是什么?

抛出异常 ~> throw

/

异常处理 -       捕获异常 ~> try...catch...finally

\

声明异常 ~> throws

6.描述下Object常用的方法

Object类是Java中的祖宗类。
一个类要么默认继承了Object类,要么间接继承了Object类。toString 定义一个对象的字符串表现形式

-- 默认是返回当前对象在堆内存中的地址信息:com.example.Student@735b478 类的全限名@内存地址
-- 直接输出对象名称,默认会自动调用toString()方法,所以输出对象toString()调用可以省略不写
-- 父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息输出!!
equals
-- 默认是比较两个对象的地址是否相同。
-- 直接比较两个对象的地址是否相同完全可以用“==”替代equals。所以equals存在的意义是为了被子类重写,以便程序员可以自己来定制比较规则。
-- 需求:只要两个对象的内容一样,我们就认为他们是相等的。hashCode
必须掌握的hashcode()方法_Java笔记虾-CSDN博客
-- 通过对象的内部地址(也就是物理地址)转换成一个整数,然后该整数通过hash函数的算法就得到了hashcode。所以,hashcode是什么呢?就是在hash表中对应的位置。
-- HashCode的存在主要是为了查找的快捷性,HashCode是用来在散列存储结构中确定对象的存储地址的wait notify notifyAll
-- wait方法,可以让当前线程进入等待唤醒状态,并释放锁。
-- notifyAll唤醒所有wait线程或notify随机唤醒一个wait线程,唤醒的线程再去公平竞争锁。
-- 只能在同步函数或代码块中使用wait、notify和notifyAllclone 返回一个对象的副本 深克隆 浅克隆
finalized

7.Java中的自增是线程安全的吗,如何实现线程安全的自增?

不安全

如何保证变量访问的原子性呢?
-- a.加锁实现线程安全:synchronized或lock 性能不好!(1)同步代码块。(2)同步方法。(3)lock显示锁。
-- b.基于CAS方式的原子类:如AtomicInteger()

8. Synchronized和CAS都可以保证多线程环境下共享数据的安全性。那么他们两者有什么区别?

一个悲观,一个乐观

Synchronized是从悲观的角度出发:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(**共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程**)。因此Synchronized我们也将其称之为**悲观锁**。jdk中的ReentrantLock也是一种悲观锁。性能较差!!CAS是从乐观的角度出发:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据CAS这种机制我们也可以将其称之为乐观锁。综合性能较好!

9. Java的动态代理有几种实现形式

静态代理

动态代理:

-- Proxy代理(JDK的)

-- CGlib代理(第三方的)

10.集合类是怎么解决高并发的问题?

线程安全的集合类

-- Vector

-- HashTable

高性能线程安全的集合类(JUC包下)

-- ConcurrentHashMap

-- CopyOnWriteArrayList

11.hashcode和equals如何使用?

Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等

hashCode()方法用于计算对象的哈希值。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。

※Java初级 常见面试题①相关推荐

  1. java陷阱常见面试题_Java常见陷阱

    java陷阱常见面试题 总览 Java是一种极简主义的语言,具有比其他语言故意更少的功能,尽管如此,Java仍然具有产生奇怪效果的边缘情况,甚至具有令人惊讶的效果的一些常见情况也会使您轻而易举. 如果 ...

  2. Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3

    Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...

  3. Java基础常见面试题(一)

    Java基础常见面试题(一) 1. 为什么说 Java 语言"编译与解释并存"? 我们可以将高级编程语言按照程序的执行方式分为两种: 编译型 :编译型语言会通过编译器将源代码一次性 ...

  4. Java开发常见面试题详解(JVM)_2

    Java开发常见面试题详解(JVM)_2 JVM 问题 详解 JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots link 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认 ...

  5. Java工程师常见面试题集锦

    Java工程师常见面试题集锦(一)互联网人必看!(附答案及视频教程,持续更新) 2019年01月02日 14:01:14 CSDNedu 阅读数:653 大牛也怕面试题,尤其是基础题,在面试中如果出现 ...

  6. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)

    Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...

  7. Java虚拟机常见面试题

    2019独角兽企业重金招聘Python工程师标准>>> 1.java引用的四种状态 强引用.软引用.弱引用.虚引用. 强引用 new一个Object存放在堆内存,然后用一个引用指向它 ...

  8. 合肥Java面试常考题_北大青鸟java 面试--常见面试题(中)

    上一文中,我们总结了java面试的基础,多线程,jvm的常见面试题,本文合肥北大青鸟合工大校区的袁老师继续介绍面试中网络.数据结构和算法.分布式理论和微服务的常见面试题. 一.网络 网络的话,主要集中 ...

  9. 北大java面试,北大青鸟java 面试--常见面试题(下)

    在之前的两篇文章中,我们已经提到了java面试中的常见问题,还有部分内容,合肥北大青鸟合工大校区的袁老师在本文也给出,希望对大家的面试过程有些帮助.这是我总结的最后一部分常见面试题:分别是数据库,基础 ...

最新文章

  1. 网络推广恶意点击js_昆明百度推广电话方法(百度推广)按效果付费_有效商机咨询...
  2. ECCV2020图像分割开源论文合集
  3. 华为虚拟home键关闭_苹果iPhone12或放弃静音键,学华为mate30Pro,发力虚拟按键
  4. python教程:几个基础类型循环删除
  5. python语言支持苹果系统吗_Mac系统上的一款Python编程平台
  6. Microsoft Azure Tutorial: Build your first movie inventory web app with just a few lines of code
  7. MATLAB加入螺旋相位板调制,平板式螺旋相位板的设计与应用
  8. 常见问题_智能切膜机常见问题
  9. Harvard-X免费生物信息课程 (代码、文档、数据) - 适合系统学习
  10. 贷后模块之催收行为综合评分卡
  11. matlab 画图函数plot
  12. Unity——Animation
  13. UVM 事务级建模TLM 单向/多向通信 端口 FIFO通信
  14. web canvas图片标点 得像素坐标数组
  15. Map接口以及那些实现类
  16. CSP-J CSP-S 初赛相关的书籍
  17. 屏幕坐标系转为笛卡尔坐标系
  18. 混淆利器proguard的用法
  19. 从大陆访问,阿里云和腾讯云的香港云服务器,哪个更快?
  20. Qt 中十六进制字节流转换为Base64编码

热门文章

  1. 《代码规范》如何写出干净的代码(四)对象和类
  2. Android开发必备那些工具
  3. 软件测试:Jmeter性能测试以及压力测试
  4. 金山云: mysql
  5. CEC 2021基准测试集
  6. CUIF2020中国高校信息化发展论坛
  7. 加 xjjdog0 好友,朋友圈送大红包!
  8. ZBrush教程(二):可用雕刻笔刷功能介绍
  9. 局域网内部管理行为应该如何控制?
  10. ubuntu 16.04L解压zip文件出现乱码