文档章节

interview questions

无畏的老巨人
 无畏的老巨人
发布于 2017/11/06 09:31
字数 1076
阅读 26
收藏 0

1.java中为什么会出现多线程?

Java内存模型决定了 CPU 不能 完全利用,为了充分利用CPU,所以产生了多线程技术。

2.多线程中,如果不调用start方法,直接调用run方法会发生什么?

只有调用Thread的start方法,将线程交由JVM控制,才能产生多线程,而直接调用run方法只是一个普通的单线程程式。 执行的是main主线程。

3.为什么会出现容器技术?

资源独立、隔离  ; 环境的一致性  ; 轻量化  ; Build Once, Run Everywhere 

4.如果java程序jvm内存分配很大会发生什么?

jvm的内存过小会导致频繁GC,过大会导致GC时间过长。内存越大,JVM 进行 Full GC 所需的时间越久,由于 Full GC 时 stop whole world 的 ,增加请求响应延迟。

5.IO和NIO有什么区别?

Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

6.什么是微服务,你是怎么理解的?

微服务的所涉及的内容非常广,包括基础设施,也包括开发框架,开发、测试、运维都涵盖到了,它绝不是一款普通的架构。从开发框架来讲,我们应该灵活地选择最合适的编程语言和框架,从而实现具体的业务细节,而不要拘泥于在某一种技术上。

7.spring中@Transactional 的事务隔离级别有几种?

DEFAULT :    数据库的默认隔离级别

READ_UNCOMMITTED : dirty reads, non-repeatable reads and phantom reads
     * can occur.即可能出现脏读,幻读,不可重复读

READ_COMMITTED : dirty reads are prevented; non-repeatable reads
     * and phantom reads can occur.即可能出现幻读,不可重复读

REPEATABLE_READ :dirty reads and non-repeatable reads are
     * prevented; phantom reads can occur. 即可能出现幻读

SERIALIZABLE :dirty reads, non-repeatable reads and phantom
     * reads are prevented. 以上误读情况都被禁止

/**
 * Enumeration that represents transaction isolation levels for use
 * with the {@link Transactional} annotation, corresponding to the
 * {@link TransactionDefinition} interface.
 *
 * @author Colin Sampaleanu
 * @author Juergen Hoeller
 * @since 1.2
 */
public enum Isolation {

	/**
	 * Use the default isolation level of the underlying datastore.
	 * All other levels correspond to the JDBC isolation levels.
	 * @see java.sql.Connection
	 */
	DEFAULT(TransactionDefinition.ISOLATION_DEFAULT),

	/**
	 * A constant indicating that dirty reads, non-repeatable reads and phantom reads
	 * can occur. This level allows a row changed by one transaction to be read by
	 * another transaction before any changes in that row have been committed
	 * (a "dirty read"). If any of the changes are rolled back, the second
	 * transaction will have retrieved an invalid row.
	 * @see java.sql.Connection#TRANSACTION_READ_UNCOMMITTED
	 */
	READ_UNCOMMITTED(TransactionDefinition.ISOLATION_READ_UNCOMMITTED),

	/**
	 * A constant indicating that dirty reads are prevented; non-repeatable reads
	 * and phantom reads can occur. This level only prohibits a transaction
	 * from reading a row with uncommitted changes in it.
	 * @see java.sql.Connection#TRANSACTION_READ_COMMITTED
	 */
	READ_COMMITTED(TransactionDefinition.ISOLATION_READ_COMMITTED),

	/**
	 * A constant indicating that dirty reads and non-repeatable reads are
	 * prevented; phantom reads can occur. This level prohibits a transaction
	 * from reading a row with uncommitted changes in it, and it also prohibits
	 * the situation where one transaction reads a row, a second transaction
	 * alters the row, and the first transaction rereads the row, getting
	 * different values the second time (a "non-repeatable read").
	 * @see java.sql.Connection#TRANSACTION_REPEATABLE_READ
	 */
	REPEATABLE_READ(TransactionDefinition.ISOLATION_REPEATABLE_READ),

	/**
	 * A constant indicating that dirty reads, non-repeatable reads and phantom
	 * reads are prevented. This level includes the prohibitions in
	 * {@code ISOLATION_REPEATABLE_READ} and further prohibits the situation
	 * where one transaction reads all rows that satisfy a {@code WHERE}
	 * condition, a second transaction inserts a row that satisfies that
	 * {@code WHERE} condition, and the first transaction rereads for the
	 * same condition, retrieving the additional "phantom" row in the second read.
	 * @see java.sql.Connection#TRANSACTION_SERIALIZABLE
	 */
	SERIALIZABLE(TransactionDefinition.ISOLATION_SERIALIZABLE);


	private final int value;


	Isolation(int value) { this.value = value; }

	public int value() { return this.value; }

}

8.spring中用到了那些设计模式,请举例说明?

工厂,动态代理(AOP),模板、装饰、单例、适配器等。如bean实例化预留的钩子可通过动态代理实现。

9.mybatis中$和#有什么区别?

#可以防止sql注入 $直接拼接值到sql语句中不安全  但 表名作为变量时,必须使用 ${ }

© 著作权归作者所有

上一篇: vps
下一篇: Javascript tricks
无畏的老巨人

无畏的老巨人

粉丝 17
博文 95
码字总数 96343
作品 0
宁波
CTO(技术副总裁)
私信 提问
Practical guide to WCF RESTful service

REST (Representational State Transfer) is an architectural style that dictates to think in terms of resources and their representation instead of just thinking about methods wit......

东风125
2015/10/26
22
0
假期快乐!超强面试资源等你Pick,先收藏!

整理 | Jane 出品 | AI科技大本营 【导读】准备面试不是一件简单的事情,本文的作者在过去一段时间先后参加 50 多次面试。过程是艰难的,但是在这个过程中也积累了一些非常有用的资源。今天 ...

AI科技大本营
2018/10/01
0
0
selenium 英文面试题

SELENIUM TOP 100 REAL TIME INTERVIEW QUESTIONS & ANSWERS:http://www.linkedin.com/pulse/selenium-top-100-real-time-interview-questions-technologies-13600-?articleId=848803524687......

智能小松鼠
2016/04/03
128
0
【转】Java 算法和数据结构 面试问题

Java Algorithm And Data Structure Interview Questions and Programs 找到『Algorithm Interview Questions PDF』,填写邮箱可以收到pdf文件。...

爱博客大伯
2018/10/31
0
0
69道Spring面试题和答案

http://ifeve.com/spring-interview-questions-and-answers/

zcl111
2015/11/21
202
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
8
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
9
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
7
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
8
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部