笔试题
1、union和union all的区别?
union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
2、inputStream类的方法有哪些?
read、available、close、mark、skip
3、truncate与drop,delete的对比
- runcate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。
- truncate只能作用于表;delete,drop可作用于表、视图等。
- truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。
- truncate会重置表的自增值;delete不会。
- truncate不会激活与表有关的删除触发器;delete可以。
- truncate后会使表和索引所占用的空间会恢复到初始大小;delete操作不会减少表或索引所占用的空间,drop语句将表所占用的空间全释放掉。
4、外观模式的特点
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
5、算法一般都可以用哪几种控制结构组合而成?
顺序、选择、循环
6、通常递归相比迭代的优势
使代码更简洁清晰,可读性更好
7、常用在文件压缩和解压算法中的数据结构是?
哈弗曼树(最优二叉树)
8、软件设计中划分模块的一个准则是什么?
高内聚低耦合
9、HTTP的请求报文结构包含?
请求行、请求头部、空行、请求数据
10、thread类中的方法
sleep、start、run、yield、join、isAlive
11、哪些修饰符不能用来修饰interface?
static、private、protected,只有public可以。
12、什么是微服务?优点和缺点
微服务是一种架构风格,是以开发一组小型服务的方式来作为一个独立的应用系统,每个服务都运行在自已的进程中,服务之间采用轻量级的HTTP通信机制 ( 通常是采用HTTP的RESTful API )进行通信。这些服务都是围绕具体业务进行构建的,并且可以独立部署到生产环境上。
优点:
1、易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰、代码量较少,开发和维护单个微服务相对简单;
2、单个微服务启动较快;
3、局部修改容易部署:单一应用只要有修改,就得重新部署整个应用。微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;
4、技术栈不受限制:在微服务架构中,可以结合项目业务及团队的特点,合理的选择技术栈。
5、按需伸缩:可根据需求,实现细粒度的扩展。
缺点:
1、运维要求高:更多的服务意味着要投入更多的运维;
2、分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的问题;
3、接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有用到这个接口的微服务都需要进行调整。
13、连接jdbc的小程序,并执行一个update操作
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
14、sql语句统计部门男女比例
select sClass 班级,count(*) 班级学生总人数,
sum(case when sGender=0 then 1 else 0 end) 女生人数,
sum(case when sGender=0 then 1 else 0 end)1.0/count()女生所占比例,
sum(case when sGender=1 then 1 else 0 end) 男生人数,
sum(case when sGender=1 then 1 else 0 end)1.0 /count()男生所占比例
from student GROUP BY sClass ORDER BY sClass asc
一面
感觉应该挂了,问的问题全部都在盲区。。。 面试官也说了,他们那边的系统需要开发人员自己去排查问题、部署、运维。所以问的问题好多都是排查问题的,全是盲区orz
1、http的四次挥手过程
2、四次挥手中的close_wait处于哪个阶段
3、连接中存在大量的close_wait,可能是什么原因
4、假如系统是个http转发器,上游系统调用本系统报错,如何判断是自己系统的错误还是下游系统的错误?
5、100万行数据,带主键,可能会冲突,如何插入到mySQL中效率最高
6、系统运行时的监控指标有哪些?如何做的监控?
7、登录系统如何做?
8、进程和线程的区别?
9、jvm问题排查步骤。
10、mysql的索引有哪些?为啥索引底层用B+树,跟哈希索引对比有啥优缺点?
二面
我擦,啥都不会的一面居然过了,
二面怼了一个小时,谁说二面只讲项目不怎么怼八股的,情报有误。
1、java里面线程安全的集合有哪些?
只讲了concurrenthashmap和hashtable,其他的不太记得了。
2、微服务的架构都用过哪些?
有spring cloud和dubbo,只用过dubbo,让简单介绍了下dubbo。
3、dubbo用到了哪些协议?各自的适用范围?
dubbo、hession、rmi、http
4、java虚拟机堆和栈的区别?堆和栈的空间什么时候释放?
5、spring框架中bean的作用域有哪些?
6、知道敏捷开发吗?
7、如何保证系统平稳运行?
8、代码审查是如何做的?会关注哪些方面?
9、使用redis遇到过性能问题吗?如何解决?
10、redis的数据结构都使用过哪些?如何选择合适的数据结构?
11、sql语句如何优化?
12、cpu使用率过高可能是哪些原因导致的?
13、项目中如何防止死锁?