面经一

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

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 其他

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 坚持就有希望,放弃一无所获
    农安043陈明娜阅读 107评论 0 0
  • 导 语 每个宝贝刚出生的时候 父母都欣喜感恩小天使的降临 小小的身体依赖在你的怀里 多么乖巧听话… 但随着孩子一天...
    瑞斯邦家长课堂阅读 333评论 0 0
  • 第一天见你 你哥哥就顺路车我们去大润发买东西 其实到现在我还想问其实列系唔系唔顺路 一家4口杨小姐身材最好 杨小姐...
    打勾阅读 236评论 0 0
  • 当《30岁的女人》这首歌红遍大江南北的时候,我还在单位宿舍的小床上和同事侃大山,追剧,看小说…… 在我心...
    兰_0cb6阅读 185评论 0 0