牛客网Java工程师能力评估记录
来源:互联网 发布:sql union关联 编辑:程序博客网 时间:2024/05/18 00:14
错误率 50%
排名:30% ?
贴一下专业解释,侵删!
1.关于JVM内存分析
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。为什么分为 线程共享和非线程共享的呢?请继续往下看。
首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?
概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么我把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。
2.关于Spring的事务传播特性
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
共同点 :
1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。
2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。
如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。
需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。
不同点 :
1.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。
sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
3.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
- 牛客网Java工程师能力评估记录
- 牛客网( C/C++工程师能力评估)
- 算法工程师能力评估
- 前端工程师能力评估
- C/C++ 工程师能力评估试题
- 阿里巴巴2017实习生笔试题+JAVA工程师能力评估部分题目
- JAVA工程师必备能力
- 现代软件工程讲义 2 工程师的能力评估和发展
- 现代软件工程讲义 2 工程师的能力评估和发展
- 现代软件工程讲义 2 工程师的能力评估和发展
- 刷题笔记:C/C++工程师能力评估1
- 刷题笔记:C/C++工程师能力评估2
- 刷题笔记:C/C++工程师能力评估3
- iOS工程师综合练习卷/ iOS工程师能力评估/搜狗2015 iOS工程师笔试题
- 牛客网前端工程师评估笔试题总结
- 工程师能力
- 一个高级java工程师需要具备什么能力和技术
- CRM能力成熟度评估模型
- c!#@创@建@P@D@F@文@档
- mac 安装go语言
- 各大视频芯片提供商对比
- 常用的垂直细分引擎工具
- 庆祝个人博客开通
- 牛客网Java工程师能力评估记录
- 以太网(802.3)帧格式
- Python学习DAY1---列表元组
- Java Web MVC开发,eclipse EE+mysql+tomcat+struts2+新浪SAE(一)
- jdbcTemplate和HibernateTemplate和TransactionManager
- windows安装Scrapy
- MPI_Barrier
- SID和Serial#的区别
- 算法导论(一): 算法基础