当前位置:首页 - 第2页

HashMap的实现原理

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 57次

1、利用key的hashCode重新hash计算出当前对象的元素在数组中的下标2、存储时,如果出现hash值相同的key,此时有两种情况。(1)如果key相同,则覆盖原始值;(2)如果key不同(出现冲突),则将当前的key-value放入链表中3、获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。4、理解了以上过程就不难明白HashMap是如何解决hash冲突的问题,核心就是使用了数组的存储方式,然后将冲突的key的对象放入链表中,一旦发现冲突就在链表中做进一步的对比。

Http和Https的区别

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 50次

一、Http和Https的基本概念Http:超文本传输协议(Http,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的

SpringMVC常见面试题总结

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 54次

1、什么是SpringMVC?简单介绍下你对springMVC的理解?SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、SpringMVC的流程?(1)用户发送请求至前端控制器DispatcherServlet;(2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;(4)D

数据库面试题目(mysql、nosql)

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 45次

一、索引聚集索引、非聚集索引都是B+树。前者B+树叶子节点包含数据,后者叶子节点包含数据地址聚集索引优点:提升IO密集负载性能;缺点:插入代价高索引缺点:维护索引耗时;占用空间大建索引须知:建在where,groupby,排序等列上;不建在性别等少数类别的列上建索引不一定加速:索引没有查询所需字段一年后DB变慢了:答题方向是cpu、磁盘、内存二、Nosql1、为什么有Nosql?增加字段需要-->无格式高并发需要-->转向内存横向拓展需要-->以前是分库分表关键:传统数据库需要“关系”,所有表存在同一台服务器中,是一个单机系统。而Nosql不使用关系,每条数据独立存储 Nosql不需要:数据库一致性要求、读写的实时性、复杂sql查询2、什么是NoSQL数据库?在

Redis面试题

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 66次

1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-ValueDB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-V

SQL优化(面试题)

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 74次

1、在表中建立索引,优先考虑where、groupby使用到的字段。 2、尽量避免使用select*,返回无用的字段会降低查询效率。如下:SELECT*FROMt 优化方式:使用具体的字段代替*,只返回使用到的字段。 3、尽量避免使用in和notin,会导致数据库引擎放弃索引进行全表扫描。如下:SELECT*FROMtWHEREidIN(2,3)SELECT*FROMt1WHEREusernameIN(SELECTusernameFROMt2)优化方式:如果是连续数值,可以用between代替。如下:SELECT*FROMtWHEREidBETWEEN2AND3如果是子查询,可以用exists代替

微服务的另一大挑战是跨多个服务的更改

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 59次

比如在传统单体应用中,若有A、B、C三个服务需要更改,A依赖B,B依赖C。我们只需更改相应的模块,然后一次性部署即可。但是在微服务架构中,我们需要仔细规划和协调每个服务的变更部署。我们需要先更新C,然后更新B,最后更新A。

微服务的缺点

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 50次

微服务的分布式特点带来的复杂性。开发人员需要基于RPC或者消息实现微服务之间的调用和通信,而这就使得服务之间的发现、服务调用链的跟踪和质量问题变得的相当棘手。1.开发者需要应对创建分布式系统所产生的额外的复杂因素l 目前的IDE主要面对的是单体工程程序,无法显示支持分布式应用的开发l 测试工作更加困难l 需要采用服务间的通讯机制l 很难在不采用分布式事务的情况下跨服务实现功能l 跨服务实现要求功能要求团队之间的紧密协作2.部署复杂3.内存占用量更高

什么是面向对象

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 44次

封装:把描述一个对象的属性和行为封装成一个类,把具体的业务逻辑功能实现封装成一个方法,其次封装的意义还有效的保护属性通过访问修饰符私有化属性(成员变量),公有化方法。继承:实现代码的复用,所有的子类所共有的行为和属性抽取为一个父类,所有的子类继承该类可具备父类的属性和行为,继承具有单一性和传递性。多态:程序中定义的引用类型变量所指向的具体类型和调用的具体方法在程序编译阶段无法确定,而是在运行期才能确定该引用类型变量指向具体哪个对象而调用在哪个类中声明的方法。

jdk1.8的新特性

发布 : 江风成 | 分类 : java面试题 | 评论 : 0 | 浏览 : 50次

Lambda表达式函数式接口*方法引用和构造器调用StreamAPI接口中的默认方法和静态方法新时间日期API

鲁ICP备15005785号-4 |

Copyright Your WebSite.Some Rights Reserved.