I'm 面试题总结

1.集合

1. 1常见的集合接口有哪些?

Collection(跟接口),set,List,Map

1.2ArrayList和LinkList的区别?

①数据结构不同:ArrayList底层用的是数组,LinkedList在jdk1.8之前用的是数组+链表,jdk1.8之后用的是数组+链表+红黑树
②初始大小不同:ArrayList为10,LinkedList没有初始大小.
③查询:ArrayList快,LinkedList慢.
④增加,修改,删除:LinkedList快,ArrayList慢.
⑤时间复杂度:ArrayList–O(1),Linkedist–O(n)----查询

1.3 Iterater和ListIterater之间有啥区别,

①我们能够使用Iterater来遍历set集合和List集合,而ListIterater只能遍历List集合.
②Iterater仅能向前遍历,ListIterater可以双向遍历.
③ListIterater添加了额外的功能,加入一个元素,替换,获取前一个和下一个的索引

1.4通过迭代器fail-fast你了解多少?

每次我们尝试获取下一个元素的时候Iterater fail-fast属性检查当前集合不论什么改动.他抛出ConcurrentModificationException(并发修改异常),collection中全部Iterater的实现都是按fail-fast来设计的。ConCurrentHashMap和CopyOnWiteArrayList这类并发除外).

1.5 那些集合类提供元素的随机访问?(有key和index的)

ArrayList,HashMap,TreeMap和HashTable

1.6 那些集合是安全的?

vectot,HashMap,properties和Stack是同步的,所以线程是安全的,能够在多线程环境下使用.

1.7Array和ArrayList有何差别?什么时候更适合用Array?

①Atrray’能够容纳基本类型数据和对象。ArrayList仅仅容纳对象.
②Array是指定大小的,而ArrayList大小是动态变化的.
③Array没有ArrayList提供的那么多方法,但是有时Array好用
对于遍历基本类型变量,虽然collections使用自己的主动装箱来减轻编码的任务,在指定大小的基本类型的列表也会变得慢.

1.8 ArrayList和Vector有何异同点?

ArrayList和Vector在非常多的时候都非常相似.
①两者都是基于索引的,内部由一个数组支持.
②两者维护插入的顺序,我们能够依据插入的顺序获取元素.
③ArrayList和Vector的迭代器实现都是 fail-fast的
④ArrayList和vector两者同意null值,也能够使用索引值对元素进行随机访问.
ArrayList和Vector的不同点
①Vector是同步的,而ArrayList是不同步的,然而寻求在迭代的时候对列表进行改变应该使用CopyOnwriteAtrrayList.
②ArrayList比Vector快,它不是同步的.
③ArrayList更加通用,有Collections工具类.

1.9怎样决定选用HashMap还是TreeMap

对于在map中插入,删除和定位这类操作HashMap是最好的选择。基于你的collection的大小或许hashMap中加入更快.
然而,假设向你需要对一个有序的key集合进行遍历,TreeMap是更好的选择.

1.10HashMap和HashTable有何异同?

①HashMap同意Key和Value为null,而HashTable不同意.
②HashTable是同步的,而HashMap不同,HashTable适用于多线程环境下。
③在jdk1.4中引入了LinkedHashMap,HashMap的一个的子类,假如你想要遍历顺序,你非常easy从HashMap转向LinkedHashMap,可是HashTable不是这种。它的顺序是不可逆的.
④HashMap提供keyset进行遍历,因为他是fail-fast的,但HashTable提供对key的Enumeration进行遍历,它不支持fail-fast.
⑤HashTable被觉得是个被遗留的类,假设你寻求在迭代的时候改动Map,应该使用CocurrentHashMap.

1.11如果我有两个ArrayList 里面放着学生对象,但是两个list里面存在一模一样的学生,如 何进行剔除?

把学生对象存在set集合里,因为set集合能去重.

2.JDBC

2.1说一下原生JDBC连接的步骤.

第一步:Class.forName()加载数据库连接驱动;
第二步:DriverManager.getConnection()获取数据连接对象;
第三步:根据 SQL 获取 sql 会话对象,有 2 种方式 Statement、PreparedStatement ;
第四步:执行 SQL 处理结果集,执行 SQL 前如果有参数值就设置参数值 setXXX();
第五步:关闭结果集、关闭会话、关闭连接。

3.异常

3.1你在写程序的时候出现过哪些异常?

Rpc,NullPoint…

4.Spring

4.1Spring IOC?

4.2Spring AOP?

4.3说一下Spring?

5.Mybatis

5.1 说一下Mybatis的好处?

5.2Mybatis如何对JDBC进行处理的?

6.Zookeeper Dubble

6.1说说Zookeeper Dubble的执行流程?

6.2说说ZAB协议和Http协议的异同?

7.SpringBoot

7.1说说SpringBoot的启动类?

7.2说说用SpringBoot的好处?

8 .SpringClould

8.1 说说SpringCloud的几大主件?都干什么用?在项目充当什么成分?

9.MySql

9.1Mysql索引创建过吗?为什么要创建索引?创建语句?

9.2说说MySQL Innodb和MyISAM分别采用什么索引?

9.3说说B+Tree 和 Hash的区别?说说底层实现原理?

9.4触发器用过吗?

9.5存储过程用过吗?

9.6Mysql函数都有哪些?

9.7左连接,右连接,内连接用过吗?

10.Redis

10.1Redis 的基本数据类型?

10.2Redis 的雪崩,穿透,击穿.

11.ElasticSearch

11.1ElasticSearch里的index是什么?

11.2为什么要用ElasticSearch?

11.3ElasticSearch底层原理?

11.4ElasticSearch里的倒排索引?

11.5你们用的什么分词器?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值