2020年java面试题总结与整理(只有题目,答案慢慢整理)~~持续更新

   最近在面试,所以就把一些面试题做一下整理

 

一。java基础

 

1. i++ 和 ++i 

 

在面试中遇到过这样一道题:i++和 || 相遇 短路原则,我们来看一下下面的代码:

package org.example;

public class Test02 {

    int i = 0, j = 0;

    public static void main(String[] args) {
        Test02 test02 = new Test02();
        test02.method01();
        System.out.println("i:"+test02.i);
        System.out.println("j:"+test02.j);
        int i = 0, j = 0;
        int a = i++;
        int b = ++j;
        System.out.println("a:"+a);
        System.out.println("b:"+b);
    }


    public void method01(){
        i++;
        ++j;
    }

}

我们来想一想输出答案是什么呢?

输出答案是:

i:1
j:1
a:0
b:1

我们看到:i++ 和 ++j 后,出了i++ 是0之外其他的都是1

我们再来看下面的这段代码:

package org.example;

public class Test03 {

    int i = 0, j = 0;

    public static void main(String[] args) {
        Test03 test02 = new Test03();
        test02.method02();
        System.out.println("i:"+test02.i);
    }

    public void method02(){
        boolean flag = (0 < 3) || i++ > 10;
    }

}

在method方法中注意 短路原则,所以i还是0 

我们看执行结果:

"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" "-javaagent:I:\dev_tools\idea\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=58490:I:\dev_tools\idea\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath H:\WORKSPACE_TINGYUN\study\springboot\test01\target\classes org.example.Test03
i:0

 

2.java中的IO都有哪些?字符流和字节流有什么区别,什么情况下用字节流,什么时候用字符流,字符流与字节流之间怎么转换?

答:

      InputStream,OutputStream是字节流,Reader、Writer是字符流

      一般有FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream

     详见这篇博客: https://blog.csdn.net/lwang_it/article/details/78886186

 

3.一个文件1.txt文件如何转换成字节数组?

 

4.集合都有哪些?List都有哪些实现?ArrayList、Vector、LinkedList底层实现原理是什么?这三者之间的区别是什么?

答:

   ArrayList和Vector底层是数组实现的,所以查询比较快,增删改比较慢

  LinkedList底层是链表实现的,所以增删改比较快,查询比较慢

  ArrayList是非线程安全的,而Vector是线程安全的

 

5.Set都有哪些实现,TreeSet、HashSet、LinkedHashSet分别有什么特点

答:https://www.cnblogs.com/wl0000-03/p/6019627.html

 

6.HashMap、HashTable、ConcurrentHashMap分别有什么特点,他们之间的区别是什么,都在分别在什么场景下用这三种Map

 

7.HashMap底层实现原理、jdk1.7和jdk1.8中HashMap有什么区别?HashMap的扩容机制和扩容原理?

 

8.java的反射机制是什么?对此有什么理解。

答:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

详见:https://www.cnblogs.com/songanwei/p/9386749.html

 

9.java 的垃圾回收机制以及原理?以及垃圾回收算法都有哪几种,分别说一说你对他们的理解

 

10.java中的队列和栈有什么区别?

 

11.一个java类加载的过程以及原理?

 

12.java中静态变量和成员变量有什么区别?他们是如何加载的

 

13.jvm调优,在实际工作中有没有过jvm调优的经验?分享一下

 

14.抽象类和接口分别是什么,他们之间的区别是什么?

 

15.final、finally、 finalize的区别和用法

 

16.Object类中都有哪些方法

 

17.在java 中 == 和 equals()的区别?

 

18.jdk1.8的新特性都有哪些?分别说一下,以及在项目中是怎么使用的?

 

19.Http协议包含哪些?Https是什么实现加密的?

 

二。MySQL

1.MySQL调优,如何进行sql优化

2.sql的执行流程

3.sql的存储过程

4.有哪些情况下索引会失效

5.索引有哪些?索引的底层是什么数据结构?索引的原理

6.有一个联合索引a,b,那么在后面三个查询条件中,a=?,b=?,a=? and b=?中 那几个条件用到了联合索引

答:联合索引遵循最左原则,a=?, 和 a=? and b=? 用到了联合索引。 而 b=? 没有用到ab的联合索引

7.MySQL中索引排序的问题:a和b两个字段都有索引,查询条件中 where a=? order by b 中 a和b的索引是否都用到了?

答:https://blog.csdn.net/zengxuewen2045/article/details/51226860

8.MySQL中有哪些存储引擎?InnoDB和MyISAM各有什么特点或者说他们有什么区别?

9.事物的隔离级别和传播机制,Mysql中默认的隔离级别是哪个?

三。并发

1.进程和线程的区别

2.线程都有哪些状态?

3.join(),yield(),sleep(),wait() 这些方法分别是什么意思?sleep()和wait()有什么区别?

4.说明一下什么线程安全和非线程安全,用一个实际的例子说明一下

5.synchronized 和 ReetrantLock 之间的区别?简单说一下 ReetrantLock 的实现原理

6.说一下 ReetrantReadWriteLock

7.说一下AQS是什么,谈谈对AQS的理解

8.谈一谈对JUC的理解,JUC中都有些什么类,分别谈一下

四。Spring框架

1.说一下对Spring框架的理解

2.IOC和AOP

3.SpringMVC 的执行流程

4.SpringMVC中的注解

5.RequestBody和ResponseBody的区别?

6.Spring中的事务是如何做的以及是怎么理解的?

 

五。MyBatis

1.MyBatis中 # 和 $ 有什么区别,什么情况下用到了 $

2.MyBatis中的缓存机制有哪些?

 

六。SpringBoot

1.如何理解SpringBoot,以及谈一谈SpringBoot和Spring的区别?

2.SpringBoot中用到了什么新技术?

3.SpringBoot的starter怎么理解?

4.SpringBoot中的 @SpringBootApplication 注解怎么理解?

5.SpringBoot中的项目是如何运行的?

6.SpringBoot项目是如何部署的?

 

七。Redis

1.Redis中有哪些数据结构,分别在什么情况下用什么数据结构

2.项目中哪些场景下用到了Redis,分别是怎么用的

 

八。分布式微服务以及SpringCloud、Dubbo、Zookeeper

1.如何理解分布式,微服务这些名词,以及跟传统的分布式和SOA架构的区别?

2.SpringCloud都有哪些技术

3.SpringBoot和SpringCloud有什么关系和区别

4.SpringCloud中有哪些注解

5.SpringCloud中如何实现链路监控的,以及什么是熔断和降级

6.zookeeper中是如何实现数据一致性的有个什么算法?

7.zookeeper、Eureka有什么区别

8.什么是Dubbo,Dubbo和SpringCloud有什么特点和区别?

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值