Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2302254
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 694
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类
文章存档

2020年(45)

2019年(22)

我的朋友

分类: Java

2019-12-05 16:36:34

按照技术模块:


多线程:第一篇:【Java面试官】史上最全的JAVA专业术语面试100问    已更新 √
微服务:第二篇:【Java面试官】史上最全的微服务专业术语面试50问    已更新 √
JVM:第三篇:【Java面试官】谈谈对jvm的理解、调优和线上排查    未更新  ×
Redis、
消息队列、
SQL
相关的面试题。不要走开,稍后更精彩!


1、面向对象的特点有哪些?


抽象、继承、封装、多态。


2、接口和抽象类有什么联系和区别?


3、重载和重写有什么区别?


4、java有哪些基本数据类型?


5、数组有没有length()方法?String有没有length()方法?


数组没有length()方法,它有length属性。


String有length()方法。


集合求长度用size()方法。


6、Java支持的数据类型有哪些?什么是自动拆装箱?


7、int 和 Integer 有什么区别?


8、Java类的实例化顺序?


父类静态成员和静态代码块 -> 子类静态成员和静态代码块 -> 父类非静态成员和非静态代码块 -> 父类构造方法 -> 子类非静态成员和非静态代码块 -> 子类构造方法


9、什么是值传递和引用传递?


10、String能被继承吗?为什么?


11、String和StringBuilder、StringBuffer的区别?


StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况(是线程不安全的)
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况(一般很少)(是线程安全的)
首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String
12、Java集合框架的基础接口有哪些?


13、Java集合框架是什么?说出一些集合框架的优点?


14、HashMap 与HashTable有什么区别?


15、ArrayList 和 LinkedList 有什么区别?


16、简单介绍Java异常框架?Error与Exception有什么区别?


17、java中的throw 和 throws关键字有什么区别?


18、列举几个你了解的几个常见的运行时异常?


19、final, finally, finalize有什么区别?


20、描述Java内存模型?


21、java中垃圾收集的方法有哪些?


22、如何判断一个对象是否存活?(或者GC对象的判定方法)?


23、Java GC是在什么时候,对什么东西,做了什么事情?


24、什么是类加MT4使用教程载器双亲委派模型机制?


25、类加载器有哪些?


26、描述类加载器工作机制?


27、分别写出堆内存溢出与栈内存溢出的程序?


28、Java 8 内存模型进行了哪些改进?


29、简述java内存分配与回收策率以及Minor GC和Major GC?


30、JVM,JDK和JRE有什么区别与联系?


31、Java线程同步的方式有哪些?


32、解释一下锁的一些基本概念:可重入锁、可中断锁、公平锁、读写锁?


33、synchronized什么情况下会释放锁?


获取锁的线程执行完了该代码块,然后线程释放对锁的占有;
线程执行发生异常,此时JVM会让线程自动释放锁。
调用wait方法,在等待的时候立即释放锁,方便其他的线程使用锁.
34、synchronized和lock有什么区别?


35、使用过哪些数据库连接池,分别有什么优点和缺点?


36、Java CAS(Compare And Swap) 无锁算法?


CAS(Compare And Swap) 无锁算法: CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。


37、线程池的作用有哪些?


线程池的作用: 在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程


降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
提高线程的可管理性。
常用线程池:ExecutorService 是主要的实现类,其中常用的有


Executors.newSingleThreadPool(),
newFixedThreadPool(),
newCachedTheadPool(),
newScheduledThreadPool()。
38、反射创建类实例的三种方式?


39、反射机制有哪些优点和缺点?


40、哪些项目中用到了Java反射机制?


jdbc中有一行代码:Class.forName('com.MySQL.jdbc.Driver.class').newInstance();
很多框架都用到反射机制,hibernate,struts都是用反射机制实现的。
41、Java 反射机制的作用?


42、你了解哪些设计模式,列举几个?jdk中用到了哪些设计模式?


43、单例模式用java有哪几种实现方式?


44、Java元注解有哪些,都有什么作用?


45、jdk自带了哪些注解,有什么作用?


46、Java8有哪些新特性?


47、简单介绍原生jdbc执行sql过程?


class.forName()加载数据驱动
DriverManager.getConnection()获取数据库连接对象。
根据SQL或sql会话对象,有两种方式Statement、PreparedStatement。
执行sql处理结果集,如果有参数就设置参数。
关闭结果集,关闭会话,关闭资源。
48、char 型变量中能不能存贮一个中文汉字,为什么?


char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode,一个char类型占2个字节(16比特),所以放一个中文是没问题的。


49、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?


50、构造器(constructor)是否可被重写(override)?


“Constructor(构造器)不能被继承,所以不能被override(重写),但是可以被overloading(重载)。


51、什么是线程安全?


52、什么是死锁?


53、synchronized的实现原理是什么?


54、有了synchronized,还需要volatile做什么事?


55、synchronized的锁优化是怎么处理的?


(强烈推荐两本书《java并发编程的艺术》、《深入理解Java虚拟机》)


  Synchronized和Volatile的区别:


    1、Volatile 仅能使用在变量级别;
    Synchronized则可以使用在变量、方法、和同步代码块等类级别的。
    2、Volatile仅能实现变量的修改可见性和有序性,并不能保证原子性(复合操作的原子性);
    Synchronized则可以保证变量的可见性、有序性、原子性。
    3、Volatile不会造成线程的阻塞;
    Synchronized可能会造成线程的阻塞。
    4、Volatile标记的变量不会被编译器优化(因为这是由cpu指令完成);
    Synchronized标记的变量可以被编译器优化(JAVA1.6后性能优化很多)。


56、JMM是什么?


57、Java并发包都有哪些?


58、什么是fail-fast?


59、什么是fail-safe?


60、什么是CopyOnWrite?


61、什么是AQS呢?


62、什么是CAS呢?


63、乐观锁是怎样的?


64、乐观锁悲观锁区别是什么?


65、数据库如何实现悲观锁和乐观锁?


66、数据库锁和隔离级别有什么关系?


67、数据库锁和索引有什么关系?


68、什么是聚簇索引?


69、什么是非聚簇索引?


70、索引最左前缀是什么?


71、什么是B+树索引?(有点长,值得一看)


72、什么是联合索引?


73、什么是回表?


74、分布式锁有了解吗?


75、Redis怎么实现分布式锁?


76、为什么要用Redis?


因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等,都对数据库提出了更高的要求,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有Redis 和 Memcached 不过中和考虑了他们的优缺点,最后选择了Redis。


77、Redis和memcache区别是什么?


78、Zookeeper怎么实现分布式锁?


79、什么是Zookeeper?(漫画版)


80、什么是CAP?


81、什么是BASE?和CAP什么区别?


82、CAP怎么推导?如何取舍?


83、分布式系统怎么保证数据一致性?


84、什么是分布式事务?分布式事务方案?


85、线程安全的单例?


86、不用synchronized和lock能实现线程安全的单例吗?


87、什么是Paxos算法?


88、ArrayList和LinkedList和Vector的区别·


89、谈一下计模式遵循的面向对象设计原则!


90、Arrays.asList获得的List使用时需要注意什么


91、List和原始类型List之间的区别?


在编译时编译器不会对原始类型进行类型安全检查,却会对带参数的类型进行检查。


92、List和List之间的区别是什么?


93、synchronized是如何实现的?


94、BIO、NIO和AIO的区别、三种IO的用法与原理


95、ConcurrentSkipListMap


96、String.valueOf和Integer.toString的区别


97、Integer的缓存机制


98、Set如何保证元素不重复?


99、Java中如何保证线程安全?


100、你使用过JVM相关的参数,列举几个

阅读(329577) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~