京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算

相关概念

面向对象的三个特征

封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象。

多态的好处

代码中如何实现多态

虚拟机是如何实现多态的

接口的意义

接口的意义用三个词就可以概括:规范,扩展,回调。

抽象类的意义

抽象类的意义可以用三句话来概括:

  1. 为其他子类提供一个公共的类型
  2. 封装子类中重复定义的内容
  3. 定义抽象方法,子类虽然有不同的实现,但是定义时一致的

接口和抽象类的区别

京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算

 

父类的静态方法能否被子类重写

什么是不可变对象

静态变量和实例变量的区别?

静态变量存储在方法区,属于类所有。实例变量存储在堆当中,其引用存在当前线程栈。

能否创建一个包含可变对象的不可变对象?

java 创建对象的几种方式

switch中能否使用string做参数

switch能否作用在byte, long上?

String s1=”ab”, String s2=”a”+”b”, String s3=”a”, String s4=”b”, s5=s3+s4请问s5==s2返回什么?

你对String对象的intern()熟悉么?

Object中有哪些公共方法?

  1. equals()
  2. clone()
  3. getClass()
  4. notify(),notifyAll(),wait()
  5. toString

java当中的四种引用

WeakReference与SoftReference的区别?

为什么要有不同的引用类型

java中==和eqauls()的区别,equals()和`hashcode的区别

equals()和hashcode()的联系

a.hashCode()有什么用?与a.equals(b)有什么关系

有没有可能两个不相等的对象有相同的hashcode

可以在hashcode中使用随机数字吗?

a==b与a.equals(b)有什么区别

3*0.1==0.3返回值是什么

a=a+b与a+=b有什么区别吗?

short s1= 1; s1 = s1 + 1; 该段代码是否有错,有的话怎么改?

short s1= 1; s1 += 1; 该段代码是否有错,有的话怎么改?

& 和 &&的区别

首先记住&是位操作,而&&是逻辑运算符。另外需要记住逻辑运算符具有短路特性,而&不具备短路特性。

public class Test{
 static String name;
 public static void main(String[] args){
 if(name!=null&userName.equals("")){
 System.out.println("ok");
 }else{
 System.out.println("erro");
 }
 }
}

以上代码将会抛出空指针异常。

一个java文件内部可以有类?(非内部类)

只能有一个public公共类,但是可以有多个default修饰的类。

如何正确的退出多层嵌套循环?

  1. 使用标号和break;
  2. 通过在外层循环中添加标识符

内部类的作用

final, finalize和finally的不同之处

clone()是哪个类的方法?

深拷贝和浅拷贝的区别是什么?

static都有哪些用法?

final有哪些用法

数据类型相关

java中int char,long各占多少字节?

京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算

 

64位的JVM当中,int的长度是多少?

int和Integer的区别

int 和Integer谁占用的内存更多?

String, StringBuffer和StringBuilder区别

String和StringBuffer

StringBuffer和StringBuilder

什么是编译器常量?使用它有什么风险?

java当中使用什么类型表示价格比较好?

如何将byte转为String

可以将int强转为byte类型么?会产生什么问题?


关于垃圾回收

你知道哪些垃圾回收算法?

垃圾回收从理论上非常容易理解,具体的方法有以下几种:

1. 标记-清除

2. 标记-复制

3. 标记-整理

4. 分代回收

如何判断一个对象是否应该被回收

简单的解释一下垃圾回收

调用System.gc()会发生什么?


进程,线程相关

说说进程,线程,协程之间的区别

你了解守护线程吗?它和非守护线程有什么区别

什么是多线程上下文切换

创建两种线程的方式?他们有什么区别?

Thread类中的start()和run()方法有什么区别?

怎么检测一个线程是否持有对象监视器

Runnable和Callable的区别

什么导致线程阻塞

阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。

京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算

 

wait(),notify()和suspend(),resume()之间的区别

产生死锁的条件

为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用

wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别

wait()与sleep()的区别

为什么wait, nofity和nofityAll这些方法不放在Thread类当中

怎么唤醒一个阻塞的线程

什么是多线程的上下文切换

synchronized和ReentrantLock的区别

FutureTask是什么

一个线程如果出现了运行时异常怎么办?

Java当中有哪几种锁

如何在两个线程间共享数据

如何正确的使用wait()?使用if还是while?

什么是线程局部变量ThreadLocal

ThreadLoal的作用是什么?

生产者消费者模型的作用是什么?

写一个生产者-消费者队列

使用阻塞队列来实现

//消费者
public class Producer implements Runnable{
 private final BlockingQueue<Integer> queue;
 public Producer(BlockingQueue q){
 this.queue=q;
 }
 @Override
 public void run() {
 try {
 while (true){
 Thread.sleep(1000);//模拟耗时
 queue.put(produce());
 }
 }catch (InterruptedException e){
 }
 }
 private int produce() {
 int n=new Random().nextInt(10000);
 System.out.println("Thread:" + Thread.currentThread().getId() + " produce:" + n);
 return n;
 }
}
//消费者
public class Consumer implements Runnable {
 private final BlockingQueue<Integer> queue;
 public Consumer(BlockingQueue q){
 this.queue=q;
 }
 @Override
 public void run() {
 while (true){
 try {
 Thread.sleep(2000);//模拟耗时
 consume(queue.take());
 }catch (InterruptedException e){
 }
 }
 }
 private void consume(Integer n) {
 System.out.println("Thread:" + Thread.currentThread().getId() + " consume:" + n);
 }
}
//测试
public class Main {
 public static void main(String[] args) {
 BlockingQueue<Integer> queue=new ArrayBlockingQueue<Integer>(100);
 Producer p=new Producer(queue);
 Consumer c1=new Consumer(queue);
 Consumer c2=new Consumer(queue);
 new Thread(p).start();
 new Thread(c1).start();
 new Thread(c2).start();
 }
}

使用wait-notify来实现

如果你提交任务时,线程池队列已满,这时会发生什么

为什么要使用线程池

java中用到的线程调度算法是什么

Thread.sleep(0)的作用是什么

什么是CAS

什么是乐观锁和悲观锁

ConcurrentHashMap的并发度是什么?

ConcurrentHashMap的工作原理

jdk 1.6:

ConcurrentHashMap是线程安全的,但是与Hashtablea相比,实现线程安全的方式不同。Hashtable是通过对hash表结构进行锁定,是阻塞式的,当一个线程占有这个锁时,其他线程必须阻塞等待其释放锁。ConcurrentHashMap是采用分离锁的方式,它并没有对整个hash表进行锁定,而是局部锁定,也就是说当一个线程占有这个局部锁时,不影响其他线程对hash表其他地方的访问。

具体实现:ConcurrentHashMap内部有一个Segment.

jdk 1.8

在jdk 8中,ConcurrentHashMap不再使用Segment分离锁,而是采用一种乐观锁CAS算法来实现同步问题,但其底层还是“数组+链表->红黑树”的实现。

CyclicBarrier和CountDownLatch区别

java中的++操作符线程安全么?

你有哪些多线程开发良好的实践?


关于volatile关键字

可以创建Volatile数组吗?

volatile能使得一个非原子操作变成原子操作吗?

volatile类型变量提供什么保证?


关于集合

Java中的集合及其继承关系

关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可:

京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算

 

poll()方法和remove()方法区别?

LinkedHashMap和PriorityQueue的区别

WeakHashMap与HashMap的区别是什么?

ArrayList和LinkedList的区别?

ArrayList和Array有什么区别?

ArrayList和HashMap默认大小?

Comparator和Comparable的区别?

如何实现集合排序?

如何打印数组内容

LinkedList的是单向链表还是双向?

TreeMap是实现原理

遍历ArrayList时如何正确移除一个元素

什么是ArrayMap?它和HashMap有什么区别?

HashMap的实现原理

Fail-fast和Fail-safe有什么区别


关于日期

SimpleDateFormat是线程安全的吗?

如何格式化日期?


关于异常

简单描述java异常体系

什么是异常链

throw和throws的区别


关于序列化

Java 中,Serializable 与 Externalizable 的区别


关于JVM

JVM特性

简单解释一下类加载器

简述堆和栈的区别

简述JVM内存分配


其他

java当中采用的是大端还是小端?

XML解析的几种方式和特点

JDK 1.7特性

JDK 1.8特性

Maven和ANT有什么区别?

JDBC最佳实践

IO操作最佳实践


需要全部面试题及答案的话可以关注我转发支持一下,私信“资料”即可获取。

为了让学习变得轻松、高效!今天给大家免费分享的一些教学资源,帮助大家在成为架构师的道路上披荆斩棘。技术方向我们有自己的高清思维方向导图以及阿里架构师讲解的架构视频分享(包括高可用,高并发,spring源码,mybatis源码,JVM,大数据,Netty等多个技术知识的架构****资料和各种电子书籍阅读)视频资料获取方式帮忙转发 转发 转发关注私信回复“资料”领取!

京东T5大牛总结:巩固Java基础,备战金九银十槽季——你的薪资自己说了算