面试准备(十九)java常见

一、什么是面向对象?谈谈你对面向对象的理解

面向过程:注重事情的每一个步骤及顺序。面向过程比较高效。

面向对象:注重事情有哪些参与者(对象)、各自需要做什么。更易于复用、扩展、维护。

面向对象的特性包括:封装、继承、多态。

封装:明确标识出允许外部使用的所有成员函数和数据项。内部细节对外部调用透明,外部调用无需修改或者关心内部实现。

继承:继承基类的方法,并做出自己的改变和扩展。

多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。

二、JDK、JRE、JVM三者的区别和联系

JVM会根据JRE的类库,将.class文件编译成可执行的机器码。 

三、== 和 equals

== 对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址。

equals在object中默认的是采用==比较。在String中会进行重写,分别比较字符创中每个字符是否相等。

str1是常量值,保存在常量区。

str2是对象,存储在堆中。 

str3赋值的是str2的引用地址。

str1 与 str2 str3的地址都不一样,str2 str3的内存地址都是堆内存中。

四、简述final的作用,说说为什么局部内部类和匿名内部类只能访问局部final变量 。

 只能访问final变量是因为:内部类在编译之后也会生成一个单独的.class文件,所以访问局部变量,是复制一个作为内部类的变量,所以必须设置成final保证两个变量是一样的。

五、String、StringBuffer、StringBuilder区别以及使用场景

 

 重载和重写的区别

 接口和抽象类的区别

 List和Set的区别

 

hashCode 与equals

ArrayList和LinkedList区别

 

HashMap和HashTable的区别以及底层实现是什么

 

ConcurrentHashMap原理

 

如何实现一个IOC容器

 

 什么是字节码,作用是什么

java类加载器有哪些

 

双亲委派模型

 

Java中的异常体系

 

GC如何判断对象可以被回收

 

线程的声明周期以及线程有哪些状态

 

 

sleep、wait、join、yield的区别

 

 

对线程安全的理解

 

Thread、Runable的区别

 

守护线程的理解

 ThreadLocal的原理和使用场景

ThreadLocal内存泄漏原因以及如何避免

 

并发、并行、串行的区别

并发的三大特性

 

 为什么用线程池?解释下线程池参数

 简述线程池的处理流程

线程池中阻塞队列的作用,为什么先添加队列而不是先创建最大线程

 

线程池中线程复用原理

 

Spring是什么

 

对AOP的理解:

 

对IOC的理解:

 

索引的基本原理

 

 MySql聚簇和非聚簇索引的区别

MySql索引的数据结构,各自优劣

 

索引设计的原则

 

MySql锁的类型有哪些

 

 

慢查询怎么优化

MySql的ACID怎么保证 

什么是MVCC

 

MySql主从同步原理

 

简述MyISAM和InnoDB的区别

 

简述MySql中索引类型及对数据库的性能的影响 

CAP理论、BASE理论 

  

负载均衡算法、类型

 

Session共享

 

分布式id生成方案

 

分布式锁解决方案

 

 如何实现接口的幂等性

 

简述ZAB协议

 

ZK的数据模型和节点类型

 

简述ZK的命名服务、配置管理、集群管理

 

ZK的watch机制

 

kafka架构设计

 

Kafka消息丢失的场景及解决方案

 

 

Kafka中ZK的作用

 

Kafka高性能原因

 

简述Kafka的reblance机制

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值