面经一

目的: 总结下面试时遇到的问题,并附上自己的答案.

1 Java基础

1.1 Java的继承,多态。 以及多态下的域和方法的调用问题 。

class A{
    int num = 1;
    public void print(){
        System.out.print("num = " + num);
    }
}

class B extends A{
    int num = 2;
    public void print2(){
        System.out.print("numn = " + num);
    }
    /*
    public void print(){
        System.out.print("num = " + num);
    }
     */
    }
}



public class C{
    public static void main(Stirng[] args){
        A a = new B();
        a.print();
        // a.print2();
    }
}

问输出结果。

1.2 Java中四个权限修饰符是什么? 具体代表了什么权限。

1.3 String, String Builder, String Buffer有什么区别?

2 集合类

这方面是问的最多的。基本每个面试都会问。所以应该仔细看一下。

2.1 map(Hashmap)了解吗? 讲一下你最常用的的map。

答案:一般我会随身携带纸笔。遇到这个问题就将hashmap的结构实现画出来。如下图:

image

不太明白的可以参考这个文章:
https://www.cnblogs.com/chengxiao/p/6059914.html

(题外: 如果对自己有自信,可以点名这种实现是jdk1.7, 在1.8后有所改变。但是这样可能会让面试官问你1.8是怎么实现的,没信心回答好千万的不要多此一举)
在画完这个图后,基本就是对面试官照着图讲hashmap的源码实现过程了。在讲源码的过程中要出现以下相关内容

  • 数组容量和负载因子。
  • 向hashmap中添加元素时的实现过程:
  • 检查map的容量,此处会涉及到resize方法。
  • 怎么确定在数组中的存储位置,此处可以带过
  • 计算出来的位序一样时怎么办? 链表链接。
  • 一定要点明添加的元素已经存在的情况(通过比较hash值和equal方法), 在此处还能告诉面试官这就是为什么我们重写hashcode要求重写equals方法,显得你对底层很了解.

2.2 List用过哪些? ArrayList 和 LinkedList的插入,删除,查找的时间复杂度各是多少? 底层怎么实现? System.ArrayCopy 是怎么操作的, 会出现什么问题.

ArrayCopy会出现的问题: https://www.cnblogs.com/weikongziqu/p/5808184.html

3 多线程

3.1 三个线程顺序打印(或者是线程C等待线程A和线程B的运行结果)怎么实现

  • 第一种方法是设置一个全局变量, 利用violate修饰,来动态的改变变量值,进而实现不同线程能拿到不同的锁

3.1 讲一下synchronized

3.2 synchronized和lock的区别是什么

  • synchronized是jdk自带的同步工具。 在获取锁后,即使程序发生异常,它也能够自动实现锁的释放。这点从对synchronized的反编译能看出来。一个synchronized对应一个monitor enter和两个monitor exit。 这点是与lock不同的地方。 lock的释放需要手动进行。

3.3 线程间怎么通信

4 spring

4.1 介绍下MVC设计模式

4.2 spring AOP / IOC介绍一下

5 手写代码

5.1 排序算法

  • 快排
  • 堆排
  • 归并
  • 冒泡

5.2 数组中只有0,1,2 三种数, 对这个数组进行排序. 要求不使用额外空间, 时间复杂度尽可能小

使用三个指针, 分别指向0,1,2. 移动指针进行交换

5.3 查看一个字符串是不是以某个子字符串开头(或者是否包含某个字符串)

使用正则表达式判断. 也可以看一下String的源码

6 数据库

6.1 用过什么数据库

6.2 Mysql的innerjoin, join, left join, right join有什么区别

6.3 mysql怎么优化

6.4 mysql表的设计

6.5 mysql索引了解不? 包括哪几种? 会出现什么情况

6.6 数据库隔离级别

6.7 非关系型数据库使用过吗?

7 JVM相关

7.1 java内存模型介绍下

7.2 垃圾搜集机制介绍下

7.3 垃圾回收算法

7.4 垃圾收集器了解不

8 其他

你可能感兴趣的:(面经一)