一、填空题
- 对于short,int,long,float,double,char分别占多数字节 ( 2,4,8,4,8,2 );
- java中有哪些线程安全的集( Vector ) 、( Hashtable ) 、( Stack ) 、( ConcurrentHashMap ) 、( enumeration ) ;
- SpringCloud常用组件( Eureka )、( Ribbon )、( Hystrix ) 、 ( zuul) ;
- Redis数据类型 ( String ) 、( zset )、( set) 、( list )、 ( hash );
- Redis持久化方式 ( rdb ) 、( aof );
- java程序的基本要素是( 类 ),其实现包括两部分( 类头部 ) 和( 类主体 ),封装了一类对象的( 属性 )和 ( 方法 );
- java捕捉异常是通过( try catch finally )结构处理异常,其中( try )代码块包含了可能发生异常的代码,( catch )代码块用来捕获处理异常,( finally )代码块用于释放占用的资源;
- 创建线程有( 四 )种方式,分别是( 实现Runnable接口 )、( 继承Thread类 )、( 使用Callable ) 、( 使用线程池 )。
- spring的七大模块分别是 ( Spring Core )、 ( Spring AOP ) 、( Spring ORM )、( Spring Web ) 、( Spring Context ) 、 ( Spring DAO )、( Spring Web MVC ),其事务的四大特性是( 原子性 )、( 一致性 )、( 隔离性 )、( 持久性 )。
- 列举SpringMVC中的常用注解( @Autowired )、( @Controller )、( @RequestMapping ) 、( @PathVariable ) (写4个即可)。
- spring有( 两 )种事务管理方式,分别是( 编程式事务 )和( 声明式事务 )。spring的事务管理接口主要有( TransactionDefinition ) 、( PlatFormTransactionManager )、
TransactionStatus ); - spring的事务隔离级别分别是( ISOLATION_DEFAULT )、ISOLATION_READ_UNCOMMITTED)、( ISOLATION_READ_COMMITTED )、( ISOLATION_REPEATABLE_READ )、( ISOLATION_SERIALIZABLE );
- 请列出5个mybatis动态sql的标签( where )、 ( sql ) 、( choose ) 、( set ) 、( foreach );
- 比较常用的数据结构有哪些【数组】、【队列】、【链表】、【栈】、【堆】、
树】、【图】、【串】; - 常见的线程池有( FixedThreadPool )、( CachedThreadPool )、(
ScheduledThreadPool )、( SigleThredExecutor ) ; - 线程的终止—班可以通过两种方法实现:自然撤销或者是调用( interrupt )方法;
- Java中的字符输出流都是抽象类( WriterStream )的子类;
- 使用JDBC进行查询数据库的7个标准步骤是:载入JDBC驱动器,定义链接的网址URL、建立链接、建立Statement对象、执行查询、处理结果、( 释放相关资源 );
- java中编程实现多线程应用两种途径:一种是通过创建Thread类的子类创建线程,另一种是通过创建( Runnable )创建线程;
- ( java.lang )包是java语言的核心包,它包含了运行java程序必不可少的系统类,在使用这个包中的类时不需要import;
- 如果一个类在声明时没有包含extends关键字,那么默认这个类直接继承( Object )类;
- 异常处理流程中,其中在( try )代码块中,通常写用于释放被占用的相关资源;
- 对于int型变量,内存分配( 4 )个字节;
- Java源程序编译后生成的字节码文件扩展名为( .class );
- InnoDB存储引擎对MVCC的实现原理( DB_TRX_ID )、( DB_ROLL_PTR )、
DB_ROW_ID );
二、简答题
-
创建线程有几种不同的方式
四种方式:
1、继承Thread类
2、实现Runnable接口
3、实现Callable接口,结合FutrueTask使用
4、利用该线程池ExecutorService、Callable、Future来实现 -
同步方法和同步代码块的区别是什么?
相同点:
同步方法就是在方法前加关键字synchronized,然后被同步的方法一次只能有一个线程进入,其他线程等待。而同步代码块则是在方法内部使用大括号使得一个代码块得到同步。同步代码块会有一个同步的“目标”,使得同步块更加灵活一些(同步代码块可以用过“目标”决定需要锁定的对象)。一般情况下,如果此“目标”为this,同步方法和同步代码块没有太大的区别。
区别:
同步方法直接在方法上加synchronized实现加锁,同步代码块则在方法内部加锁。很明显,同步方法锁的范围比较大,而同步代码块范围要小一点。一般同步的范围越大,性能就越差。所以一般需要加锁进行同步的时候,范围越小越好,这样性能最佳。 -
ArrayList和LinkedList的区别是什么?
1、数据结构不同
ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构
2、效率不同
ArrayList的随机访问(查询)效率高,插入和删除效率低,LinkedList的查询效率低,而删除和插入效率高,因为不需要移动元素。
3、自由性不同
ArrayList自由性比较低,因为它需要手动设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加元素,同通过调用下标进行使用,而LinkedList自由性较高,能够随数据量的变化而变化,但是它不便于使用。 -
BIO、NIO、AIO有什么区别?
BIO,NIO和AIO是Java网络编程的三种模型
BIO:同步并阻塞,服务实现模式为一个连接对应一个线程,即客户端发送一个连接,服务端要有一个线程来处理。如果连接多了,线程数量不够,就只能等待,即会发生阻塞。
NIO:同步非阻塞,服务实现模式是一个线程可以处理多个连接,即客户端发送的连接都会注册到多路复用器上,然后进行轮询连接,有I/O请求就处理
AIO:异步非阻塞,引入了异步通道,采用的是proactor模式,特点是:有效的请求才启动线程,先有操作系统完成在通知服务端
-
应用场景:
BIO:适用连接数目比较小且固定的架构,对服务器要求比较高,并发局限于应用中
NIO:适用连接数目多且连接比较短的架构,如:聊天服务器,弹幕系统等,编程比较复杂
AIO:适用连接数目多且连接长的架构,如相册服务器
-
BIO和NIO的区别
-
BIO主要是以I/O流的形式处理数据;NIO以I/O块(buffer)的形式处理数据,效率:块>流
-
BIO是阻塞的,NIO是非阻塞的
-
BIO主要是以字节流和字符流操作,NIO是基于channel(通道)、buffer(缓冲区)操作的;selector(选择器)是用来监听channel的
-
BIO是单向的,要么是输入流要么是输出流,NIO是双向的,可以从channel往buffer读写数据,同时buffer也可以向channel读写数据
-
-
-
synchronized和volatile的区别是什么?
1、volatile仅能使用在变量级别;synchronized则可以使用在变量、方法和类级别的
2、volatile仅能实现变量的修改可见性,并不能保证原子性;synchronized则可以保证变量的修改可见性和原子性
3、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞
4、volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化
浙公网安备 33010602011771号