面试常问问题总结

         因为面试常用的都是一些基础题,所以在此总结了一下,分享给大家。

     1.List和Set的区别

            首先要搞清楚java中有序和无序的概念
            有序指的是存储顺序与添加顺序相同,并且可以通过下标访问,List就是这样。
            无序刚好相反,指的是存储顺序与添加顺序无关,没有下标,当然也不可能通过下标访问,Set就是如此。
            这里需要注意的是,有序、无序中的“序”与我们平常所说的“顺序”无关。
            而TreeSet是无序,但又是排好序的。即添加顺序与存储顺序无关,但是其中的对象实现了排序。

            a、List,Set都是继承自Collection接口
            b、List特点:元素有放入顺序,元素可重复 ; Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 
            c、List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet

     2.HashMap和HashSet的实现原理

        HashMap和HashSet的区别

        HashMap的实现原理如下:HashMap实现原理分析

     3.什么是分布式?分布式与集群的区别

        分布式与集群的区别是什么?

     4.接口和抽象类的区别

        接口和抽象类有什么区别

 

    5.类和对象的区别

        类是定义一个对象的数据和方法的蓝本,对象是类的实例,可以从一个类中创建许多实例。例如有一个Person类,实例化之后的男人和女人就是对象。

    6.什么是泛型

 

       使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。例如:类型转换错误,在编译的时候不会报错,但是运行的时候才会,使用泛型就可以保护类型的安全。再比如,同样的方法,只是返回的类型不一样,这样用泛型就可以重用代码,不用写两个相同的方法。

    7.值传递和引用传递

       Java中按值传递与按引用传递的区别

 

    8.类加载器

       Java类加载器总结

    9.Java api中集合类的区别

    10Js闭包

    js闭包和java的里面的引用传递差不多是同样的里面,引用的是内存地址。

    11.Linux下编译当前文件夹下面所有java文件的命令

    12.Java的垃圾回收机制

    Java垃圾回收机制

    13.事务的隔离级别

        Java 事务及隔离级别

    14.jdk和jre的区别

       JDK、JRE、JVM三者间的关系

    15.null==object和object==null的区别

       null == object表示去object的内存中查看该内存空间是否为空,判断的是内存空间的容量是否为空,object对象并没有初始化。

       object == null 表示首先初始化object对象,并判断该对象是否为空,这才是正确的用于判断对象是否为空的用法

       java判断字符串是否为空的方法总结

    16.为什么java是与平台无关的语言

         java的跨平台不是java源程序的跨平台 ,如果是这样,那么所以语言都是跨平台的,java源程序先经过javac编译器编译成二进制的.class字节码文件(java的跨平台指的就是.class字节码文件的跨平台,.class字节码文件是与平台无关的),.class文件再运行在jvm上,java解释器(jvm的一部分)会将其解释成对应平台的机器码执行,所以java所谓的跨平台就是在不同平台上安装了不同的jvm,而在不同平台上生成的.class文件都是一样的,而.class文件再由对应平台的jvm解释成对应平台的机器码执行。
         最后解释下机器码和字节码的区别: 一,机器码,完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码意思也可能是不同的。换句话说,根本不存在跨平台性。比如,不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果;二,我们知道JAVA是跨平台的,为什么呢?因为他有一个jvm,不论那种硬件,只要你装有jvm,那么他就认识这个JAVA字节码。至于底层的机器码,咱不用管,有jvm搞定,他会把字节码再翻译成所在机器认识的机器码。

    17.常用算法

        Java常用排序算法/程序员必须掌握的8大排序算法

    18.常用设计模式

       单例模式、工厂模式、适配器模式、代理模式、观察者模式、中介者模式

       Java开发中的23种设计模式详解

    19.Maven、gradle、SVN、Git

 

     Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.

     Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能

     Maven和Gradle都是构建工具,用于管理项目中的差异、依赖、编译、打包、部署等

     SVN和Git是版本控制工具

    20.Spring中的aware接口

  BeanNameAware接口是为了让自身Bean能够感知到,获取到自身在Spring容器中的id属性。

     同理,其他的Aware接口也是为了能够感知到自身的一些属性。比如实现了ApplicationContextAware接口的类,能够获取到ApplicationContext,实现了BeanFactoryAware接口的类,能够获取到BeanFactory对对象

    21.IO和NIO的区别

     a.IO是面向流的  NIO是面向缓冲区的

     b.IO是阻塞的   NIO是非阻塞的,可以异步进行

     c.NIO有选择器,使其可以做到一个线程同时管理多个通道

    d.具体链接 IO和NIO的区别

    22.int和Integer的区别

     int和Integer的区别       

    23.==和equal的区别

     ==和equal的区别

    24.final作用

      a) final可以修饰类,这样的类不能被继承。

      b) final可以修饰方法,这样的方法不能被重写。 

      c) final可以修饰变量,这样的变量的值不能被修改,是常量。

    25.java容器有哪些

       java容器有哪些

    26.ArrayList 和 LinkedList 的区别是什么

       ArrayList 和 LinkedList 的区别是什么

    27.ArrayList和Vector的区别

      ArrayList和Vector的区别

    28.Array和ArrayList的区别

      Array可以包含基本类型和对象类型,ArrayList只能包含对象类型

    Array大小固定,ArrayList的大小是动态变化的。

    ArrayList提供了更多的方法和特性:比如 :addAll(),removeAll(),iterator()等等。

    对于基本数据类型,集合使用自动装箱来减少编码工作量。但是,当处理固定大小基本数据类型的时候,这种方式相对较慢。

     29.哪些集合类是线程安全的

       线程安全(Thread-safe)的集合对象:Vector 、HashTable 、StringBuffer 、ConcurrentMap

       非线程安全的集合对象:ArrayList 、LinkedList、HashMap、HashSet、TreeMap、TreeSet、StringBulider

     30.Iterator 和 ListIterator 有什么区别

       Iterator 和 ListIterator 有什么区别

     31.Callable,Runnable的区别及用法

       Callable,Runnable的区别及用法

     32.线程池的五种状态

       线程池的五种状态

     33.线程池中 submit()和 execute()方法有什么区别

       线程池中 submit()和 execute()方法有什么区别

     34.sleep()和wait()方法的区别

       sleep()和wait()方法的区别

     35.Java中如何保证线程安全性

       Java中如何保证线程安全性

     36.死锁的四个必要条件?如何避免和预防

       死锁的四个必要条件?如何避免和预防     

     37.threadlocal原理及常用应用场景

       threadlocal原理及常用应用场景

     38.volatile和synchronized的作用和区别

       volatile和synchronized的作用和区别是什么?

     39.synchronized和Lock的区别

        两者区别:

        1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;

        2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;

        3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工

           释放锁(unlock()方法释放锁),否则容易造成线程死锁;

        4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2则会一直等待

          下去,而Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了;

        5.synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可判断、可公平(两者皆可)

        6.Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题。

        synchronized和Lock的区别

     40.synchronized、ReentrantLock以及Atomic的区别

        synchronized、ReentrantLock以及Atomic的区别

     41.堆栈的区别

        堆栈的区别

     42.盏和队列区别

        盏和队列区别

     43.双亲委派模型

        什么是双亲委派模型

     44.Java的类加载过程

        Java的类加载过程

     45.jvm判断对象是否可以回收的方法

        判断对象是否可以回收的方法

     46.sql优化

       sql优化  

     47.redis的优缺点以及使用场景

       redis 优缺点 使用场景

     48.HashMap和Hashtable的区别

       HashMap和Hashtable的区别

     49.sleep,wait,yield,join的区别

       sleep,wait,yield,join的区别

     50.redis缓存穿透以及解决办法

        redis缓存穿透以及解决办法

     51.数据库字段为什么设置为Not Null更优化

        数据库字段为什么设置为Not Null更优化

     52.垃圾回收算法以及垃圾回收器

        垃圾回收算法以及垃圾回收器1    垃圾回收算法以及垃圾回收器2

     53.CMS垃圾回收器

        CMS垃圾回收器

     54.jvm-新生代与老年代GC

        jvm-新生代与老年代GC

     55.分代回收算法如何工作的

        分代回收算法如何工作的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值