京东面经汇总(一)

1、List和Set的区别

list 中的对象可重复,有序。set中不允许重复,并且无序。

2、List常用的实现类

ArrayList,Linkedlist以及Vector

3、ArrayList和LinkedList的区别

ArrayList的数据结构是数组,由于数组的特点,所以查询以及更新速度快,但是添加以及删除速度慢,因为每次操作,目标位置后面的元素都要移动,而Linkedlist是链表结构,所以和arraylist刚好相反。添加,删除快,而查询慢。

4、Set常用的实现类

HashSet,LinkedHashSet,TreeSet

5、HashSet和LinkedHashSet的区别

LinkedHashSet直接继承HashSet。

6、int和Integer的区别

int是基本数据类型,Integer是int的封装类;
Integer变量必须在实例化后才能使用,默认值null,而int不需要,一个int变量4个字节,默认值为0
Integer是对象的引用,存储的是地址,而int直接存储数值

7、==和equals的区别

==比较的是两者是否指向同一地址(引用是否相同)
equals比较的是两者指向的地址的值是否相同(值是否相同)

8、final关键字

java中的关键字,可以修饰类,方法,成员变量,本地变量
一旦引用声明final,其引用将不能被改变,否则会报错
被final修饰的方法不能被重写
被final修饰的变量初始化后,其值不能被改变

9、接口和抽象类的区别

接口使用interface修饰,抽象类使用abstract修饰。
接口中只能有抽象方法,不能被实例化;
一个类只能继承一个抽象类,但是可以实现多个接口;

10、原子操作,CAS存在的问题,如何解决

原子操作:一个或多个操作在cpu执行过程中不被中断的特性;可以通过加锁和CAS保证原子性操作
CAS: 三个参数 一个当前内存值V,旧的预期值A,即将更新的值B,当且仅当AV相同得时候,将内存值V更改为B,返回true,否则返回false
存在的问题:ABA,AtomicStampedReference来解决ABA问题:这个类的compareAndSet方法作用是首先检查当前引用是否等于预期引用,并且当前标志是否等于预期标志,如果全部相等,则以原子方式将该引用和该标志的值设置为给定的更新值。

11、++和--操作是否为原子操作,为什么

不是,++先取出值,再+1或-1,最后存入值,具有多个步骤,所以不是原子操作;

12、Java的异常处理机制,Error和Exception的区别

两者都继承与Throwable;
Error代表无法预期的错误,不能通过程序本身来解决;
Exception代表可以捕捉的异常,可以通过程序解决;

13、IOException需要捕获吗?

输入输出异常,需要捕获吧!

14、synchronized和Lock的区别

synchronizd是java中的关键字,Lock是一个类,接口
synchronizd是悲观锁(独占锁),Lock是乐观锁;乐观锁就是每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就是CAS操作

15、线程池:创建、核心参数、拒绝策略

创建线程池调用Executors中的对应方法,一共有四种类型:
newSingleThreadPool: 单线程线程池
newfixedThreadPool: 固定大小的线程池
newSheduledThreadPool:定期,可调度的线程池
newCacheThreadPool:可缓存的线性池
ThreadPoolExecutor是我们线程池核心类,参数有7个:
corePoolSize(线程池核心大小)、maximumPoolSize(最大线程池大小)、keepAliveTime(空闲线程存活时间)、Unit(销毁时间单位)、拒接策略等。
拒接策略有四种:
AbortPolicy:直接抛出异常(默认)
CallerRunsp0licy:如果线程池没有关闭,直接在线程池中执行新任务
DiscardPolicy:不出来新任务,直接丢弃
DiscardOldestPolicy:抛弃最老的任务

16、Spring依赖注入的方式

接口注入
Setter方法注入
构造方法注入

17、当前bean有没有都行,应该采用什么方式注入

接口注入?

18、Redis的数据类型,常用的Redis命令

String,Set,Zset,List,Hash

19、MyBatis中 # 和 的区别

使用#{xxx}引用参数的时候,Mybatis会把这个xxx参数认为是一个字符串,--'xxx'
使用${xxx}引用参数的时候, Mybatis会把这个xxx参数认为是一个值,--xxx

20、Mysql联合索引的最左匹配原则

只能从左到右顺序组合创建,联合索引的最左原则就是建立索引KEY union_index (a,b,c)时,等于建立了(a)、(a,b)、(a,b,c)三个索引,从形式上看就是索引向左侧聚集,所以叫做最左原则,因此最常用的条件应该放到联合索引的组左侧。

全部评论

相关推荐

jack_miller:杜:你不用我那你就用我的美赞臣
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务