9月20号面试总结(shangyun)

1.二分法查找实现

2.HashMap和Hashtable的区别
1、继承的父类不同

Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

2、线程安全性不同
3、是否提供contains方法
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。
4、key和value是否允许null值
Hashtable中,key和value都不允许出现null值。
5、两个遍历方式的内部实现上不同
Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

6、hash值不同
哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

7、内部实现使用的数组初始化和扩容方式不同
HashTable在不指定容量的情况下的默认容量为11,而HashMap为16,Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。

3.Collection和Collections的区别
Collection是集合类的上级接口,继承与他有关的接口主要有List和Set

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作

4.ArrayList、Vector、LinkedList的区别
ArrayList、Vector和LinkedList类均在java.util包下,均为可伸缩数组,即可以动态改变长度的数组

ArrayList和Vector都是基于存储元素的Object[] array来实现的,它们会在内存中开辟一块连续的空间

来存储,因为数据存储是连续的,所以它们支持用下标来访问元素,索引数据的速度比较快。

1)ArrayList和Vector都有一个初始化的容量大小,当里面存储的元素超过初始的大小时就需要动态地扩充

它们的存储空间,Vector默认扩充为原来的两倍(每次扩充空间的大小可以设置),ArrayList默认

扩充为原来的1.5倍(没有提供方法来设置空间扩充的方法)。

2)ArrayList和Vector最大的区别就是synchronization的使用,没有一个ArrayList的方法是同步的,而

Vector的绝大多数方法(如add,insert,remove,set,equals,hashcode)都是直接或间接同步的,所以Vector

是线程安全的,ArrayList不是线程安全的。正是由于Vector提供了线程安全的机制,其性能上也要稍逊于ArrayList

LinkedList是采用双向列表来实现的,对数据的索引需要从列表头开始遍历,因此用于随机访问则效率比较低,

但是插入元素时不需要对数据进行移动,因此插入效率较高。同时,LinkedList是非线程安全的容器

对容器的选择:

当对数据的主要操作是索引或只在集合的末端增加、删除元素时,使用ArrayList或Vector效率比较高,

当对数据的操作主要为指定位置或删除操作时,使用LikedList效率比较高;当在多线程中使用容器时,

选用Vector较为安全

5.List<String>为何不能赋值给List<Object>
这种转换只能在子类与父类之间转换,虽然Object是String的父类,但是List<Object>和List<String>在编译器看来,是两种完全不同的东西,不允许你这样转换。

6.Enumernation和Iterator的区别

7.Iterator和ListIterator的区别
  1. iterator()方法在set和list接口中都有定义,但是ListIterator()仅存在于list接口中(或实现类中);

  2. ListIterator有add()方法,可以向List中添加对象,而Iterator不能

  3. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

  4. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

  5. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。  

8.Mybatis的一级、二级缓存,#和$占位符
Mybatis的接口映射文件UserMapper.xml、参数传递有2种方式、一种是#{}、另一种是${}

二者有着很大的区别:

#{} 实现的是sql语句的预处理参数、之后执行sql中用?号代替、使用时不需要关注数据类型、mybatis自动实现数据

类型的转换、并 且可以防止sql注入

${} 实现是sql语句的直接拼接、不做数据类型转换。需要自行判断数据类型、不能防止sql注入

总结:

#和$的区别:

1、

#是预编译的方式,

$是直接拼接;

2、

#不需要关注数据类型,mybatis实现自动数据类型转换;

$不做数据类型转换,需要自行判断数据类型;

3、

#可以防止sql注入;

$不能防止sql注入;

4、

如果只有一个参数,默认情况下,

#{}中可以写任意的名字;

${}中只能用value来接收。

9.ajax工作原理
ajax 的全称是Asynchronous JavaScript and XML
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
https://www.cnblogs.com/wanghp/p/6991554.html

10.二叉树遍历方法

11.Memcache和Redis的区别
数据结构:Memcache仅能支持简单的K-V形式,Redis支持的数据更多
多线程:Memcache支持多线程,Redis支持单线程,CPU利用Memcache利用率更高
持久化:Redis支持持久化,Memcache不支持持久化
分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构
虚拟内存:Redis当物理内存使用完时,会将一些很久没有用的内存交换到磁盘,而Memcache采取的LUR策略,将一部分数据刷新叼
两者进行对比,是因为都是内存数据管理系统,而实际上两者之间区别还是很大,Redis更多的象一个键值对数据,包括数据的持久化,主从架构,数据备份等策略都是为了保证数据安全以及高可用,而Memcache更多的是一个数据缓存系统是为了提升数据的读取效率,所以两者的应用也有所不同,Memcache适合于适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等工作场合,Redis除去做Nosql数据库使用外,还能用做消息队列,数据堆栈和数据缓存等。

12. 创建多线程的方式 : 4种
* 1.继承Thread类
* 2.实现Runable接口
* 3.实现Callable接口
* 4.使用线程池创建线程

原文地址:https://www.cnblogs.com/WhiperHong/p/11558830.html

时间: 2024-08-25 11:48:25

9月20号面试总结(shangyun)的相关文章

9月20号面试总结(zhongluan)

1.数据库优化数据库读写分离,通过myCat实现对主键,order by 和where后面的字段创建索引sql语句优化: 2.数据库常用的函数avg min max conat(字符串连接) lower(小写) upper(大写) trim(去掉空白字符) substr(求子串) 3.decode有了解过吗数据库函数,用于条件判断 4.数据库索引创建索引,提高查询效率 5.数据库索引有哪些分类唯一性:唯一索引和非唯一索引 .索引列的个数:单列索引和复合索引: 6.数据库union union a

7月20号=》241页-250页

10.4.2 使用box盒模型实现多栏布局 与通过float.inline-box方式实现的多栏布局相比,使用box属性值来实现多栏布局可以让多个栏目的底部对齐. 代码示范: //为元素设置display属性为box样式 #container{ display:box; width:960; text-align:left; } //为#container元素下的div设置多栏布局的样式 #container>div{ border:1px solid; box-sizing:border-bo

兼容树莓派 国内产的香蕉派 20K 如期在7月20号 完成,欢迎大家前来订购

兼容树莓派 国内产的香蕉派 20K 如期在7月20号 完成,欢迎大家前来订购

3 月 20 号,同场加映一场

"深入浅出 Silverlight 与 Expression Blend 开发实际" 研讨会,将于 3 月 20 号周六,同场加映一场,报名网址如下: http://msdn.microsoft.com/zh-tw/ee869157.aspx 章立民 - 大育顾问股份有限公司 原文:大专栏  3 月 20 号,同场加映一场 原文地址:https://www.cnblogs.com/petewell/p/11516425.html

Visual Studio 2015将在7月20号RTM

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:用了3个多月的VS 2015终于要迎来RTM了,不过感觉有点淡淡的忧伤(为什么呢?请看正文) 7月20日Visual Studio 2015将正式发布,微软会在Channel 9上直播线上发布会.大家可以通过这个发布会了解VS 2015正式版的最新功能和技术,等发布会结束后就可以马上下载使用VS 2015 RTM了."阅读原文"即是直播地址. 过去这3个多月,我已经使用VS

3月20号

1.浮动的特点 1.浮动的元素不占用标准流的位置 2.浮动特性会让行内元素和块级元素都变成行内块元素,具有行内块的特性. 行内块的特点:宽高起作用,可以一行显示多个,margin,padding四面都有效 3.如果父盒子中有子盒子的话,一般的用法就是,让子盒子,要浮动都浮动,要不浮动都不浮动. 4.父盒子中的子元素,无论如何浮动,都不会超出父盒子. 5.浮动的元素跟上一个元素的位置有关系 2.设置图片在垂直方向的对齐方式 vertical-algin: top / middle /bottom

9月24号面试总结(康拓普1面)

康拓普面试1.springmvc常用注解@Controller @Requestmapping @RequestParam @Path_variables @ResponseBody 2.常用数据库优化:varchar可以建索引吗MySQL的btree索引和hash索引的区别varchar类型数据可以建索引 3.常用数据库表 4.hashmap遍历的方式1.通过map.keySet()遍历key和value 2.Map.entrySet使用iterator遍历key和value 3.通过Map.

9月20号甲骨文学习总结

学习总结 HTML 文档声明:<!doctype html> HTML三大部分:html,head,body head:编码格式<meta charset="utf-8> 网页的组成:结构,表现,行为  今天只是学习的结构 颜色:#000000  16进制  123456789abcdef 路径分为绝对路径和相对路径,绝对路径E: 相对路径:/ 进入  ./同级 ../上级 html基本标签 h1-h6 标题  p段落 i倾斜 b加粗 u下划线 sub下面的  sup上面

7月20号总结

星期一结束了,在今天我们讲得内容的量比较适中,这种速度正好适合学习消化,在今天我们学习了JS事件的基础与事件的绑定,JS的事件主要分为鼠标事件.键盘事件.表单事件以及页面事件:今天我们主要讲了鼠标事件和附带讲了下页面事件,鼠标事件分为onclick(点击).ondblclick(双击).onmousedowm(按下鼠标).onmouseup(放开鼠标).onmousemove(鼠标移动时).onmouseover(鼠标经过时).onmouseout(鼠标离开时):页面事件分为onload(页面加