又去面试了,今日面试总结如下

第一题

数据库有a如下的表,表结构如下

员工编号 职务 组织编码
employeeID JobTitle OrganizationCode

要求,编写部门员工数>10人的员工 编写相应的SQL语句 回答

  1. select * from a group by OrganizationCode having count(employeeID) > 10;

第二题

在如下的源代码文件中,那个是正确的类定义

A

  1. public class test {

  2. public int x = 0;

  3. public test(int x){

  4. this.x = x;

  5. }

  6. }

B

  1. public class Test{

  2. public int x = 0;

  3. public Test(int x){

  4. this.x = x;

  5. }

  6. }

C

  1. public class Test extends T1, T2 {

  2. public int x = 0;

  3. public Test(int x){

  4. this.x = x;

  5. }

  6. }

D

  1. public class Test extends T1 {

  2. public int x = 0;

  3. public Test(int x){

  4. this.x = x;

  5. }

  6. }

E

  1. protected class Test extends T2{

  2. public int x = 0;

  3. public Test(int x){

  4. this.x = x;

  5. }

  6. }

答案:BDE

第三题

已知如下的代码,

  1. switch(m){

  2. case 0: System.out.println("0");

  3. case 1: System.out.println("1");

  4. case 2: System.out.println("2");

  5. case 3: System.out.println("3");break;

  6. default: System.out.println("Other Condition");

  7. }

A: 0 B: 1 C: 2 D: 3 E: 4 F: None

答案 F

第四题

面向对象的基本特性:封装,继承,多态。

封装

封装是指隐藏对象的属性和细节,仅仅对外公开接口,例如封装成一个Class类。

继承

子类继承父类的方法和行为。例如Java中的继承关键字Extends。

多态

一个类有多种状态,例如Java中定义的接口,以及抽象类。

第五题

kibana支持哪些图形的生成 支持生成线形图、区域图和条形图

第六题

Es搜索速度为什么快于MySql 首先Es使用的是B+Tree索引,如下图所示Java一年,面试总结_Javaes使用的是倒排序索引,如下图所示Java一年,面试总结_Java_02

TreeIndex以树的形式保存在内存中,使用FST+压缩公共前缀的方法节省了内存,TermIndex查询到Term Dictionary 所在的block,去磁盘上查找Term减少I/O次数。

第七题

Redis和MySql有什么区别 Redis是key类型的NoSql,不支持复杂的查询,单线程事物只满足隔离性,writer操作不能满足持久化,占用内存很多,偶尔会把数据写入swap中。MySql是符合笛卡尔积的关系型数据库,支持绝大多数的Sql,满足ACID以及各种隔离级别,数据能保证持久化,数据能够保存在磁盘中。

第八题

什么是ACID ACID分别为原子性,一致性,隔离性,持久性。

第九题

客户请求访问HTML页面,与访问Servlet有什么异同?A 相同,都使用HTTP协议。B 区别,前者 Web 服务器直接返回 HTML 页面,后者 Web 服务器直接调用 Servlet 方法,由 Servlet 动态生成 HTML 页面。C 区别:后者需要在 Web.xml 中配置 URL 路径。D 区别:前者使用 HTTP 协议,后者使用 RMI 协议。

答案 AD

第十题

i++ 和 ++i 有什么区别 i++ 先赋值再相加 ++i 先相加再赋值

第十一题

哪些类可以用于处理 Unicode 编码

  1. A: InputStreamReader

  2. B:BufferedReader

  3. C:Writer

  4. D:PipedInputStream

答案:A

四个API如下

A、

  1. InputStreanReader的构造函数:

  2. InputStreamReader(InputStream in)

  3. 创建一个使用默认字符集的 InputStreamReader。

  4. InputStreamReader(InputStream in, Charset cs)

  5. 创建使用给定字符集的 InputStreamReader。

  6. InputStreamReader(InputStream in, CharsetDecoder dec)

  7. 创建使用给定字符集解码器的 InputStreamReader。

  8. InputStreamReader(InputStream in, String charsetName)

  9. 创建使用指定字符集的 InputStreamReader。

B、

  1. BufferedReader的构造函数:

  2. BufferedReader(Reader in)

  3. 创建一个使用默认大小输入缓冲区的缓冲字符输入流。

  4. BufferedReader(Reader in, int sz)

  5. 创建一个使用指定大小输入缓冲区的缓冲字符输入流。

C、

  1. Writer的构造函数:

  2. protected Writer()

  3. 创建一个新的字符流 writer,其关键部分将同步 writer 自身。

  4. protected Writer(Object lock)

  5. 创建一个新的字符流 writer,其关键部分将同步给定的对象。

D、

  1. PipedInputStream的构造函数:

  2. PipedInputStream()

  3. 创建尚未连接的PipedInputStream。

  4. PipedInputStream(int pipeSize)

  5. 创建一个尚未连接的PipedInputStream,并对管道缓冲区使用指定的管道大小。

  6. PipedInputStream(PipedOutputStream src)

  7. 创建PipedInputStream,使其连接到管道输出流src。

  8. PipedInputStream(PipedOutputStream src, int pipeSize)

  9. 创建一个PipedInputStream,使其连接到管道输出流src,并对管道缓冲区使用指定的管道大小。

第十二题

简单写下冒泡算法

  1. private int[] bubbleSort(int[] array) {

  2. int temp;

  3. for (int i = 0; i < array.length - 1; i++) {

  4. boolean Flag = false; // 是否发生交换。没有交换,提前跳出外层循环

  5. for (int j = 0; j < array.length - 1 - i; j++) {

  6. if (array[j] > array[j + 1]) {

  7. temp = array[j];

  8. array[j] = array[j + 1];

  9. array[j + 1] = temp;

  10. Flag = true;

  11. }

  12. }

  13. if (!Flag)

  14. {

  15. break;

  16. }

  17. }

  18. return array;

  19. }

第十三题

String s = new String("xyz") 创建了几个String Object A 1 B 2 C 3 D 4

答案 A