记面试一家公司的Java实习面试题

面试题

多线程和并发(线程的创建)
线程池的具体实现:
Executors类,提供了一系列工厂方法用于创建线程池,返回的线程池都实现了ExecutorService接口。
public static ExecutorService newFixedThreadPool(int nThreads)
创建固定数目线程的线程池。
public static ExecutorService newCachedThreadPool()
创建一个可缓存的线程池,调用execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。
public static ExecutorService newSingleThreadExecutor()
创建一个单线程化的Executor。
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类。
ExecutoreService提供了submit()方法,传递一个Callable,或Runnable,返回Future。如果Executor后台线程池还没有完成Callable的计算,这调用返回Future对象的get()方法,会阻塞直到计算完成。

java注解的如何定义和被解析
java中的原子性
volitle关键字的使用
打包成jar的命令:
将这个java文件存到C盘根目录下,ok,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javacHelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错hello.jar。

代理模式
观察者模式
监听模式
单例模式(懒汉模式)如何实现线程安全
设计模式的单一原则:
单一职责模式(SRP):就一个类而言,应该仅有一个引起它变化的原因。

MySQL:原子性,隔离性,一致性和持久性.
隔离性
隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
一致性
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态.
原子性
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.
持久性
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

mysql的组合索引:
(表A建立a+b+c组合索引,以下查询时索引使用情况:
有索引情况:a、a+b、a+c、a+b+c、b+a、c+a、c+a+b
无索引情况:b、c、b+c
结论:mysql索引最左原则,使用到索引:必须要包含第一个条件,比如上面的列子必须要包含a这个字段条件;另外索引与顺序无关,mysql会自动优化(比如:a+b组合索引,b+a条件也可以使用索引)
注意:组合索引的时候,要想用到索引,组合字段中的第一个必须要使用到索(比如:a+b组合索引,在使用的时候a没有使用到索引,那么a+c就不会使用到组合索引))

InnoDB如何实现行锁:
InnoDB存储引擎为我们提供了两种标准的行级锁.
共享锁(S Lock),允许事务读取一行数据
排它锁(X Lock),允许事务删除或更新一条数据.
对于行锁有三种算法,分别是:
Record Lock: 单个行记录上的锁
Gap Lock :间隙锁,锁定一个范围,但不包含本身
Next-Key Lock : Gap Lock+ Recork Lock,锁定一个范围,并且锁定记录本身

InnoDB引擎的在本地的存储文件

查看表所用的引擎的命令:
show create table 表名
修改引擎的命令:
alter table 表 engine=引擎

事务的隔离级别有什么:
SQL标准里定义的隔离级别有以下 4 种:
读未提交:一个事务可以读取到,另外一个事务尚未提交的变更。
读已提交:一个事务提交后,其变更才会被另一个事务读取到。
可重复读:在一个事务执行的过程中所读取到的数据,和事务启动时所看到的一致。
串行化:当操作一行数据时,读写分别都会加锁。当出现读写锁互斥时,会排队串行执行。
MySQL 默认的隔离级别–可重复读,数据行的每一次修改,都会记录一条回滚操作。

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted) 是 是 是
不可重复读(read-committed) 否 是 是
可重复读(repeatable-read) 否 否 是
串行化(serializable) 否 否 否

jvm(从类加载开始)
jmm
jvm常用调优命令

hashmap底层原理(ConcurrentHashMap)
红黑树的实现

linux常用命(修改文件权限命令):
chmod,r 4 读 w 2 写 x 1 执行

springcloud常用组件和实现方式

http的头部信息包含什么,TCP的三次握手,http长连接和短连接
netty(webSock)

TCP/IP的4层分别是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值