首页 > 其他分享 >椭xxx信息技术有限公司

椭xxx信息技术有限公司

时间:2024-12-17 23:00:01浏览次数:3  
标签:Java 信息技术 xxx 回收 任务 线程 内存 有限公司 加载

1. 笔试

1.1 请对比Exception和Error,另外运行时异常与一般异常有什么区别

特性 Exception Error RuntimeException 一般异常(Checked Exception)
继承关系 Throwable -> Exception Throwable -> Error Exception -> RuntimeException Exception -> (非 RuntimeException)
类型 被捕获并处理的异常 系统级错误,不需要捕获处理 运行时异常,通常由程序错误导致 需要捕获或抛出的异常
例子 IOException, SQLException OutOfMemoryError, StackOverflowError NullPointerException, ArithmeticException IOException, SQLException
处理方式 必须捕获或声明抛出 不需要捕获,一般不可恢复 可以选择捕获,也可以不处理 必须捕获或声明抛出
是否被强制处理

1.2 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?

引用类型 引用对象的生命周期 是否影响对象的回收 使用场景
强引用 对象存在时不被回收 强烈影响,不会回收 核心业务对象,需要长期存活
软引用 内存不足时可能回收 内存不足时会被回收 缓存、内存敏感应用
弱引用 无论内存是否紧张都会回收 强烈影响,总是被回收 临时缓存、避免内存泄漏
幻象引用 无法直接访问,回收时处理 不影响对象回收,仅用于监控 对象销毁前的清理、堆外内存管理

1.3 谈谈Java反射机制,动态代理是基础什么原理

  • 反射机制:允许在运行时访问和操作类、方法、字段等元数据,增加了程序的灵活性,但也带来性能开销和安全性问题。
  • 动态代理:利用反射技术动态生成代理对象,并在方法调用时通过 InvocationHandler 执行自定义操作。JDK 动态代理需要接口,CGLIB 代理可以直接代理类,广泛应用于 AOP 和分布式系统中。

1.4 如何保证容器是线程安全的?ConcurrentHashMap如何实现搞笑地线程安全

保证容器线程安全:

  1. 使用同步机制(Synchronized)
  2. 使用显式锁(ReentrantLock)
  3. 使用并发容器
  4. 使用原子类(Atomic)
  5. 使用 volatile 关键字

ConcurrentHashMap 通过以下方式实现了高效的线程安全:

  1. 分段锁(Java 7及以前):将哈希表分成多个段,多个线程可以同时访问不同段,减少了锁竞争。
  2. 桶级锁(Java 8及以后):每个桶内独立加锁,减少了线程之间的阻塞。
  3. CAS 操作:在某些情况下,通过无锁的 CAS 操作确保数据的原子性。
  4. 优化锁和自旋:在某些场景下,避免了传统锁带来的性能损失。

1.5 synchronized底层如何实现?什么是锁的升级和降级

https://blog.csdn.net/qq_37756660/article/details/138859402

1.6 Java并发包提供了哪些并发工具类

  1. Executor Framework 框架简化了线程池的使用,允许你更方便地管理和调度线程。
  2. CountDownLatch 是一个同步工具类,它允许一个或多个线程等待其他线程完成任务。
  3. CyclicBarrier 允许一组线程互相等待,直到所有线程都达到某个公共屏障点。在线程到达屏障后,所有线程会被释放,并且计数器会重置,允许下一次的使用。
  4. Semaphore 是一个计数信号量,用于控制访问共享资源的线程数。信号量通常用于实现限制并发的场景。
  5. BlockingQueue 是一个线程安全的队列,它在队列为空时会阻塞等待数据,在队列满时也会阻塞等待空间。常用于生产者-消费者模式。

1.7 Java的并发类库提供的线程池有哪几种?分别用什么特点

线程池类型 特点 适用场景
FixedThreadPool 固定线程数,适用于负载稳定的任务 长期、稳定的后台任务,处理固定数量的线程池任务
CachedThreadPool 线程数动态变化,适合短期任务,但容易导致大量线程创建和销毁 短期、大量的并发任务
SingleThreadExecutor 只有一个线程,保证任务顺序执行 需要按顺序执行任务的场景
ScheduledThreadPool 支持定时和周期性任务 定时任务、延迟任务、周期性任务
WorkStealingPool 工作窃取算法,线程间相互窃取任务 适合大规模并行计算和小粒度任务的场景
ForkJoinPool 使用工作窃取,适合递归任务和分治法任务 分治算法、大规模并行计算

1.8 请介绍类的加载过程,什么是双亲委派模型?

  • 类加载过程:从加载、链接到初始化的整个过程,确保类被正确加载和执行。
  • 双亲委派模型:通过将类加载请求委派给父加载器处理,避免了类的重复加载,并提高了系统的安全性和稳定性。

1.9 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?

区域划分为:方法区(Metaspace),堆(Heap),栈(Stack),程序计数器,本地方法栈,直接内存(Direct Memory)

可能发生OutOfMemoryError:

  • 堆内存方法区是最容易导致OutOfMemoryError的区域,尤其是在程序创建大量对象或类加载过多时。
  • 栈内存主要是因方法调用深度过大或递归导致的StackOverflowError。
  • 直接内存不足时会抛出Direct buffer memory错误,这通常涉及到本地I/O操作。

1.10 Java常见的垃圾收集器有哪些

  1. SerialGC:适用于单核、内存小的环境。
  2. ParallelGC:适用于多核、吞吐量要求较高的环境。
  3. CMS:适用于对停顿时间要求较高的应用。
  4. G1:适用于大内存、高吞吐量并且需要精细控制GC停顿时间的应用。
  5. ZGC:适用于极低停顿时间和超大内存的应用。
  6. ShenandoahGC:类似ZGC,适用于低停顿、高并发、大内存应用。
  7. EpsilonGC:适用于不依赖JVM垃圾回收的特殊场景。

1.11 你了解Java应用开发中的注入攻击吗

  1. SQL注入
  2. LDAP注入
  3. XSS攻击
  4. 命令注入
  5. XML注入

1.12 谈谈MySQL支持的事物隔离级别,以及悲观锁和乐观锁的应用和原理

1.13 谈谈Spring Bean的生命周期和作用域?

Spring Bean 生命周期:从 Bean 的创建、依赖注入、初始化、使用到销毁的全过程。主要涉及实例化、依赖注入、初始化、销毁等步骤。
Spring Bean 作用域:决定了一个 Bean 在容器中的创建和生命周期。常见的作用域有:singleton(默认)、prototype、request、session、application、websocket 等。

2. 自我介绍

3. 简单自我介绍一下你这个低代码项目

4. 那你这个项目在生成的时候有没有做一些限制

5. 线程与线程之间怎么进行交互

6. 线程池在运行时能不能修改核心线程数

7. Spring Cloud和SpringBoot有什么区别

8. 什么是分布式

9. 你最近有在学习什么新技术嘛?

10. 你平时在通过什么方式学习新的技术

11. 从一个后端的考虑,你会如何开展一个项目

12. 反问

面试总结

这个面试官很好,对我的简历指出了一些问题,给了我一些实用性的建议。

标签:Java,信息技术,xxx,回收,任务,线程,内存,有限公司,加载
From: https://www.cnblogs.com/lymf/p/18613519

相关文章

  • 信息技术应用创新软件适配认证规则
    1.适用范围本规则适用于信息技术应用创新应用软件适配认证。2.认证模式认证模式:产品检测+获证后监督认证的基本环节包括:a.认证的申请b.产品检测c.认证结果评价与批准d.获证后的监督e.复审3.认证申请3.1认证单元划分......
  • SVN 报错 | svn: E170004: Commit failed (details follow): svn: E170004: Directory
    问题描述IDEA中通过SVN拉取项目后进行修改,第一次commit提交代码的时候成功提交,第二次修改后再提交的时候报错了,提示“Directory'xxx'isoutofdate”解决方法报错的原因是本地项目过时了,和svn服务器的项目版本不一致。需要先update更新本地的项目,再重新修改代码然......
  • flask毕设信息技术共享社区(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展,知识共享已成为推动社会进步与创新的重要动力。关于信息技术共享社区的研究,现有文献主要集中在社区平台的构建技术......
  • 明明正确配置了export PATH=XXX环境变量,但是source ~/.bashrc和/etc/profile之后还是
    问题:明明正确配置了exportPATH="/***:$PATH",比如:exportPATH="/usr/bin:/bin:$PATH"exportPATH=$PATH:/home/jie/myapp/dealii-9.2.0但是source~/.bashrc之后还是不生效然后在/etc/profile配置了之后也是不自动生效。问题根源:后面有一个PATH配置错了没有加后缀:$......
  • js中的undefined和 ReferenceError: xxx is not defined 有什么区别?
    在JavaScript中,undefined和ReferenceError:xxxisnotdefined虽然都表示变量在某种程度上不可用,但它们代表了不同的情况:undefined:表示一个变量已被声明,但尚未赋值。它是一个JavaScript的内置值,表示变量存在于作用域中,但它没有被赋予任何具体的值。letmyVariable;......
  • 基于SpringBoot + Vue的株洲崔氏服装有限公司服装生产管理信息系统设计与实现
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • tf.sparse.reshape ValueError: Cannot reshape a tensor with xxx elements to shape
    目录项目场景问题描述报错信息原因分析解决方案后续问题项目场景大口径超表面的逆向优化设计,需要处理大型稀疏张量,超过10^10次方个数据。问题描述在使用tf.sparse.SparseTensor将大批量三维稀疏张量整形成二维稀疏张量的时候,代码报错,用简单的代码举个例子:import......
  • 请问class与[class=xxx]的区别是什么?两者是否等价?
    在前端开发中,class和[class=xxx]在选择器中使用时,并不完全等价。它们的主要区别在于如何处理元素上可能存在的多个类名。class选择器:匹配任何包含指定类名的元素,无论该元素是否还有其他类名。<divclass="ab"></div><divclass="a"></div><divclass="b"></div>.a......
  • 拥抱现代化信息技术:揭秘开工快线商砼ERP自动化生产管理系统在预拌混凝土生产管理中的
     预拌混凝土生产管理的难点主要包括原材料质量控制、生产调度、物流配送、成本控制、客户服务等方面。利用现代化信息技术,特别是如惠邦科技的开工快线商砼自动化生产管理系统这样的专业软件,可以有效地解决这些难点。以下是如何利用现代化信息技术进行改进的分析:1.原材料质......
  • H5流媒体播放器EasyPlayer.js出现Failed to constructor 'Worker': Script at 'file:/
    随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。当播放器遇到报错Failedtoconstructor‘Worker’:Scriptat'file://......