第一阶段面试题

一、JAVA基础

1. continue和 break有什么区别?

答案:

break和continue都是用来控制循环结构的。

  1. break:提前终止循环可以使用break来完成。break完全结束一个循环,跳出循环体执行循环后面的语句。

  2. continue:理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

  3. 区别:continue只终止本次循环,break则完全终止循环

2. i++和++i的区别?

答案:

i++ 理解为:先用i值后加1, 比如int j=i++; 如果i的初值是1,那么表达式i++的整体值就是1,然后,i的值就变成了2,最后执行赋值运算,将i++整体的值1,赋值给j,j为1。

++i 理解为:先加1后用i值,比如int j=++i;如果i的初值是1,首先i增加1为2,然后用i的值2最为++i整体表达式的值,最后进行赋值运算,将++i表达式的值2赋值给j,j为2。

注意:这两个表达式在计算时,=号赋值计算,都是最后发生的,是非常常见的考点。

二、OOP

1. 静态变量和实例变量的区别?

答案:

在语法定义上的区别:静态变量前要加static 关键字,而实例变量前则不加。

在程序运行时的区别:

  1. 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

  2. 静态变量不属于某个实例对象,而是属于类,所以也称为类变量。

  3. 实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

三、JAVASE

1.说出ArrayList,LinkedList的储存性能和特性?

答案:

区别如下:

  1. ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,优点是索引读取快,从最后插入和删除元素速度快,但是头部插入和删除慢。

  2. LinkedList使用双向循环链表方式存储数据,所以头尾插入或读取插入的速度快,而中部插入和读取慢.

第二阶段面试题

1.GET方法与POST方法的区别?

难度中等【中等】

答案:

2.HTML和xml的区别?

难度中等【中等】

答案:

3. Servlet的调用过程?

难度中等【中等】

答案:

4.介绍一下会话技术session和cookie?

难度中等【难】

答案:

Cookie的原理是通过Set-Cookie响应头和Cookie请求头将会话中产生的数据保存在客户端。客户端请求服务器, 服务器将需要保存的数据通过Set-Cookie响应头发给客户端, 客户端收到后会将数据保存在浏览器的内部。当客户端再次请求服务器时, 通过Cookie请求头将上次保存的数据再带给服务器, 服务器通过Cookie头来获取数据, 通过这种方式可以保存会话中产生的数据。Cookie是将需要保存的数据保存在了客户端, 是客户端技术. 每个客户端各自保存各自的数据, 再次访问服务器时会带着自己的数据, 每个客户端持有自己的数据, 因此就不会发生混乱了。

Session是基于一个JSESSIOINID的Cookie工作的。

当需要保存数据时, 服务器会为当前浏览器创建一个session对象, 用于保存和这个浏览器相关的数据, 并且服务器会为每一个session分配一个独一无二的编号(ID), 服务器在响应时会通过Set-Cookie头将session的id以Cookie的形式发送给浏览器并保存在浏览器的内部, 此后浏览器再来访问服务器都会在请求中一个Cookie请求头带着上次保存的sessionid, 服务器可以通过Cookie请求头获取session的id, 通过id找到为当前浏览器服务的session!

5.JSP的九大隐式对象?

难度中等【中等】

答案:

JSP翻译引擎在将JSP翻译成servlet的过程中, 在servlet里预先定义了九个对象, 因此我们可以在JSP页面中直接使用这九个对象

request

response

out

pageContext

page(this)

application

config

session

exception

6.BS和CS的区别?

难度中等【中等】

答案:

7.在JS中==和===的区别?

难度中等【中等】

答案:

8.http常见的状态码有哪些?

难度中等【难】

答案:

9.解释一下什么叫连接池?

难度中等【中等】

答案:

10.css有哪些选择器?

难度中等【中等】

答案:

该答案仅供参考,详细自己百度总结。

第三阶段面试题

  1. 何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?

答:用于创建bean对象,管理bean对象的那个容器

Spring IOC 容器本质上指的的就是Spring Bean容器,

Spring Bean容器中最核心一个机制是IOC机制(

控制反转),所以有时候又将springbean容器称之为

Spring IOC 容器.

2.Spring IOC 如何理解?

答:IOC 是Spring中提供一种控制反转机制,目的是将我们

项目中对象的依赖管理交给Spring实现,这样可以更好

实现对象关系的解耦,提高程序的可扩展性.

3.Spring DI 如何理解?

答:DI 是Spring中的依赖注入机制,IOC的实现需要借助

这种机制.我们通常会这样理解,Spring Bean容器中的

IOC思想一种目标,DI是实现这种思想的目标的手段.

4.Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制?

答:@Scope(“singleton”)

@Scope(“prototype”)

@Lazy(value=true)

5.Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放资源,目的是什么?何为内存泄漏?

答:借助反射机制,防止内存泄漏,对象已经不使用了但占用着内存,这种现   象称之为内存泄漏,内存泄漏不是内存溢出,但是它是内存溢出的一个导火索.       内存溢出直接就导致系统崩溃了.

6.描述Spring MVC处理流程及应用优势

答:

1、客户端发出一个http请求给web服务器,web服务器对http请求进     行   解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径,    web容器将请求转交给DispatcherServlet.

2、DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射       器(HandlerMapping)的配置找到处理请求的处理器(Handler)。

3、由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。

4、Handler对数据处理完成以后将返回一个ModelAndView()对象给      DispatcherServlet。

5、DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转  化为真正的视图View。

6、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展    现出完整的view并返回给客户端。

7.Spring中的事务处理方式及优缺点

答:优点在于:

1:能够实现全局事务的控制,通过EJB CMT进行事物的管理。

2:能够保证项目模块在系统中完成的功能是可可控制的的操作(AOP)

缺点在于:

1:Spring中的事物声明有编程式事物和申明是事物

8.MyBatis应用中#与$有什么异同点

答:

相同点:都是通过get来获取值的

不同点:$传进去的字符串不带引号 #号带引号

9.MyBatis应用动态SQL解决了什么问题

答:有时候,固定的sql语句不能够满足我们的应用需求。这个时候需要在标准的基础上建立动态的查询语句。

Mybatis提供了多种注解,可以提供动态查询语言。

比如说在开发的时候,遇到这样的场景,界面提供了多种查询,但是都是非必填写,在选择查询条件时可以选中任意几种组合作为查询条件,如果在使用jdbc的时候,需要判断参数为空,自己组装sql,

但是mybatis提供动态sql机制,依靠标签。

10.Shiro框架权限管理时的认证和授权流程描述.

答:Shiro权限控制流程的原理:

应用代码 —- 调用Subject (shiro的Subject 就代表当前登陆用户) 控制权限 —- Subject 在shiro框架内部 调用 Shiro SecurityManager 安全管理器 —– 安全管理器调用 Realm (程序和安全数据连接器 )。

Subject要进行任何操作,都必须要调用安全管理器(对我们来说是自动的)。

而安全管理器会调用指定的Realms对象,来连接安全数据。

Realms用来编写安全代码逻辑和访问安全数据,是连接程序和安全数据的桥梁。

第四、五阶段面试题

1 什么是Redis?

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

可以充当缓存、队列等作用。

2 Redis两种持久化的方式的比较。

答:Redis的持久化方式有两种,AOF和RDB。

RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.

AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。

两种区别就是,一个是持续的用日志记录写操作,crash(崩溃)后利用日志恢复;一个是平时写操作的时候不触发写,只有手动提交save命令,或者是shutdown关闭命令时,才触发备份操作。

选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。rdb这个就更有些 最终一致性(eventually consistent)的意思了。

3、说说Redis哈希槽的概念?

Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

4、Redis集群最大节点个数是多少?

16384个

5、Redis中的管道有什么用?

一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。

这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多POP3协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。

6、怎么理解Redis事务?

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

7、Redis事务相关的命令有哪几个?

MULTI、EXEC、DISCARD、WATCH

8、Redis如何做内存优化?

尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.

9 什么是RPC?

答案:RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

10 HttpClient与JSONP区别?

1发送请求的位置不同.

JSONP:浏览器解析js发出的请求

HttpClient:是业务层java模拟发出Http请求

2返回值的格式不同

JSONP:返回数据时必须要有回调函数.

HttpClient:直接返回JSON数据即可.

3代码的层级不同

JSONP:代码层级一般3层

HttpClient:一般5层.

11 什么是nginx?

答:Nginx (engine x) 是一个高性能的HTTP和反向代理服务。

反向代理方式是指以代理服务器来接收Interrnet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务,当做服务器的替身,这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。

防火墙通路只允许代理服务器有权进行访问。

可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。

配置文件主要由四部分组成:main(全区设置),server(主机配置),upstream(负载均衡服务器设置),和location(URL匹配特定位置设置)。

有1全局变量2事件配置3 http参数4虚拟主机基本设置5 Nignx状态监控6反向代理7负载均衡8 URL重写9 IP限制

主要了解虚拟主机配置,反向代理,负载均衡,url重新


第一组

  1. 你对分布式有哪些了解

  2. 你对高并发这一块做过哪些了解

  3. 多线程如何保证数据同步,使用哪些技术

  4. 分布式的框架他的原理是什么

  5. 说说你对Spring框架的理解,他在项目中有哪些用途

  6. 用过NoSQL数据库吗,说说你用过哪些NoSQL数据库,他们是怎样在你的项目中应用

  7. 你对Redis这一块做过哪些了解,通常你会在哪些地方用到Redis

  8. 你是如何理解负载均衡的,在项目中有用过负载均衡吗?

  9. memcache你有用过吗,通常你会用在项目什么地方。

  10. 说说你对aop和ioc的理解

  11. 有用过线程池吗?你对线程池是怎样理解的

  12. 分布式框架有用过哪些

  13. 你是如何保证你的项目的高并发的

  14. 数据库的常见优化手段有哪些

  15. 数据库慢查询优化你有做过了解吗

  16. 有设计过接口吗?

  17. 有了解过异步框架吗,你对异步与同步是怎样理解的

  18. 在项目中有使用过dubbo框架吗,你是如何应用该框架的

  19. 多线程编程中你是如何保证线程安全的

  20. 说说乐观锁和悲观锁的区别

  21. hibernate和mybatis的区别(高频)

  22. 说说你常用哪些框架,他们之间的区别是什么

  23. mybatis的一级缓存和二级缓存的区别

第二组

  1. 说说你对多线程技术的了解

  2. 有哪些集合类,他们的区别是什么?你在项目中通常如何使用这些类

  3. 线程安全与非线程安全之间的区别是什么

  4. 如何保证数据库的高可用

  5. 你在项目中通常使用哪些数据库,使用该数据库的理由是什么,你对该数据库有做过哪些优化?

  6. 集合类的一些底层实现问题,如arraylist与linkdlist的底层实现,之间的区别,性能区别

  7. 有用过集群吗,你是如何使用集群的,(此处包括但不限于tomcat集群,mysql集群等)

  8. nginx负载均衡的算法有哪些,他们之间的区别是什么,你通常使用哪种算法

  9. 如何进行session共享,有哪些方法,他们之间有什么区别

  10. redis有哪几种数据类型,你在项目中是如何使用redis的,他们的应用场景有哪些

  11. 你常使用的缓存数据库有哪些,使用他们的原因是什么

  12. String,Stringbuffer,stringbuilder他们之间的区别是什么,你一般使用哪个类

  13. 在开发中你是如何与前端进行交互的,为什么使用这种交互方式。

  14. sleep,wait,join之间的区别

  15. 消息队列的实现原理是什么?你有用过哪些消息队列的框架,说说他们之间区别

  16. 说说你使用maven的原因,为什么要使用maven,他的优点是什么

  17. shiro登陆认证的流程

  18. 谈谈对多线程的理解

  19. spring的核心类

  20. java的容器类有哪些

  21. springaop的设计模式

  22. .mybatis的优缺点

第三组

  1. spring的接口有哪些

  2. gc处理的是内存里的什么

  3. jvm里面有什么

  4. 线程的实现方法,那三种?

  5. 4种工厂模式

  6. 大部分都会问你项目上的!比方这个项目那个部分是你完成的,用到了什么,底层也要大概的告诉他们!

  7. 还有以后会学到的那些redis那些,都很重要

  8. 安全框架,缓存,消息队列,爬虫分别描述一下,那些就是你们的亮点!

  9. linux的命令

  10. 问你常写的代码以及面向对象

  11. 三大框架,比如说springmvc的优点

  12. mybatis如何实现批量

  13. 最最重要的,数据库优化!没有之一。

  14. 怎么解决高并发。人家老爱问我。

  15. 挑一个你最熟悉的框架讲一讲

  16. 还喜欢问一些京淘里的技术你是怎么应用到项目上的。

  17. 尽量包装2年以上吧,至少一年,以咱学的东西,还是比较稳。

  18. 换个名字,换下介绍,技术还是那些。类似项目就好。

  19. 还有就是一些基础问题  比如说有没有可能出现i > i+1的情况

  20. tomcat的配置有几种

  21. Tomcat的溢出异常你是如何处理的

  22. 索引的优化

  23. 说说范式的理解

  24. 写出单表查询,多表查询,外关联查询

  25. 左连接与右连接的区别

第四小组

1.java的设计模式有哪些

答:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

并发型模式和线程池模式

2.线程的实现方法

第一种:是继承Thread类 实现方法run() 不可以抛异常 无返回值

第二种:是实现Runnable接口 实现方法run() 不可以抛异常 无返回值

第三种:是实现Callable<T>接口,接口中要覆盖的方法是 public <T> call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值

第四种:线程池 executortService

3.第五种:计数器Timer

4.Mybatis的优点

第一,简单:易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

第二,实用:提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。

灵活:通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

第三,功能完整:提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。

增强系统的可维护性:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

5.在你的项目中如何使用Shiro的

答:项目中shiro主要用在登录认证和权限认证

登录认证:

1)系统调用subject的login方法将用户信息提交给SecurityManager

2)SecurityManager将认证操作委托给认证器对象Authenticator

3)Authenticator将身份信息传递给Realm。

4)Realm访问数据库获取用户信息然后对信息进行封装并返回。

5)Authenticator 对realm返回的信息进行身份认证。

授权认证:

1)系统调用subject相关方法将用户信息(例如isPermitted)递交给SecurityManager

2)SecurityManager将权限检测操作委托给Authorizer对象

3)Authorizer将用户信息委托给realm.

4)Realm访问数据库获取用户权限信息并封装。

5) Authorizer对用户授权信息进行判定。

6.你用过几种缓存

答:目前用过的缓存有redis缓存以及MyBatis的一二级缓存

7.大部分都是讲项目,还有在简历上列出来的技术点

答:目前用过的缓存有redis缓存以及MyBatis的一二级缓存

redis的特点

1)基于C语言开发的程序 操作速度回很快 能够支持每秒30万次/集合运行

2)Redis是基于内存的.并且可以支持将内存数据持久化到磁盘中

3)Redis中的数据是key-value的形式,并且支持多个数据类型 String Set List 对象

MyBatis的一级二级缓存:

1)一级缓存的作用域是sqlSession缓存,默认是开启的,当执行flush或者close后,缓存将会被清空。执行增删改,数据也将被清空

2)二级缓存的作用域是sqoSessionFactory缓存:作用范围更大,跨session使用。默认是关闭的,需要手动在cache标签中开启。

8.你们项目开发完成之后,首先肯定是追求功能的实现,那么实现完成之后是怎么做优化的

9.如果一定要多变关联查询生成一个excle表格,那么你会如何进行优化

10.shiro可以进行权限控制,那么如果用户已经登录,管理员在后台修改了该用户的权限,那么有什么方式让用户直接获取该修改

11.连我精心准备的装B神器多线程虚拟机反射都没问

JAVA的反射机制是在运行状态中,对于一个类可以知道它的属性和方法,对于一个对象我们可以调用这个对象的属性和方法,对于这种可以动态的知道类的信息和动态调用的功能称之为JAVA的反射。

12.MQ的理解?问的比较多

主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景

13.java垃圾回收策略

在Java中,都是通过可达性分析来对象是否存活的(如果对象是死的,那么它所占用的内存就是需要回收的)。

可达性分析算法的基本思想就是通过一系列被称为“GC Roots”的对象开始,从这些节点向下搜索,搜索走过的路线称为引用链。当一个对象没有在任何引用链上出现,则这个对象会被判定为不可用的(死的,可回收的)。

在被可达性分析算法判定为不可用的对象,也并非是一定就是会被回收的,它们还会经历一次筛选的过程,筛选的条件就是此对象是不是要执行finalize()方法,如果对象没有覆盖finalize()方法或它的finalize()方法在上一次垃圾回收器工作时已经执行过了,则被判定为不用执行finalize()方法(对象会在这次回收中被回收),若判定为需要执行finalize()方法,则这个对象会被放置在一个F-Queue队列中,稍后虚拟机会建立一个finalizer线程(低优先级)来触发这个方法,但虚拟机不承诺会等它执行完这个方法。(也就是这个对象可能在执行finalize()方法时被回收了),如果在finalize()方法中,对象加入了任何一个引用链中,则这个对象在这次回收器工作时就不会被回收了。

在Java中,有几种可作为GC Roots对象:虚拟机栈(栈帧中的本地变量表)中引用对象。方法区中类静态属性和常量引用的对象和本地方法栈中JNI引用的对象;

14.中软面试的时候我还跟他讲了内存模型和java垃圾回收策略

15.java内存模型不好解释

在JVM内部,Java内存模型把内存分成了两部分:线程栈区和堆区,JVM中运行的每个线程都拥有自己的线程栈,线程栈包含了当前线程执行的方法调用相关信息,也把它称作调用栈。随着代码的不断执行,调用栈会不断变化。程栈还包含了当前方法的所有本地变量信息。一个线程只能读取自己的线程栈,也就是说,线程中的本地变量对其它线程是不可见的。即使两个线程执行的是同一段代码,它们也会各自在自己的线程栈中创建本地变量,所有原始类型(boolean,byte,short,char,int,long,float,double)的本地变量都直接保存在线程栈当中,对于它们的值各个线程之间都是独立的。对于原始类型的本地变量,一个线程可以传递一个副本给另一个线程,当它们之间是无法共享的。堆区包含了Java应用创建的所有对象信息,不管对象是哪个线程创建的,其中的对象包括原始类型的封装类(如Byte、Integer、Long等等)。不管对象是属于一个成员变量还是方法中的本地变量,它都会被存储在堆区。

16.谈谈你最近做的一个项目中用到了什么技术或者是怎么实现的?

17.list是否可以加null

可以,但不可以add(new Object())

18.大驼峰小驼峰区别-方法命名规则

19.spring中的ioc原理

20.mybatis注入原理<映射>

21.redis基本类型,底层原理

22.全文检索实现

23.list和set区别

1、List,Set都是继承自Collection接口

2、List特点:元素有放入顺序,元素可重复;

Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)

24.你对spring框架了解多少

1)开源框架?

2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合?

3)AOP?将安全,事务等与程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了面向切面编程,提高了复用性?

25.单点登录(我自己选择说的)

用户只需要一次登录与一次退出

所有应用系统共享一个身份认证系统。

  统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。

所有应用系统能够识别和提取ticket信息

  要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

优点

1)提高用户的效率。

用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。

2)提高开发人员的效率。

SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。

3)简化管理。

如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。

缺点

1)不利于重构

因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时。

2) 无人看守桌面

因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露。

26.你对消息队列的理解

答:就是一个容器,你把消息丢进去,不需要立即处理。然后有个程序去从你的容器里面把消息一条条读出来处理。

27.mqsql数据库中子查询和join应该用哪个

答:

mqsql数据库中子查询有:

1.where型子查询;

2.from型子查询;

3、exists型子查询

Join的内连接有:

1.INNER JOIN;左连接

2.LEFT JOIN;右连接

3.RIGHT JOIN

4.自然连接:NATURE JOIN

28.代理的类型

答:

1.静态代理

由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。

2.动态代理:在程序运行时,运用反射机制动态创建而成。

2.1 可分为:1.JDK的动态代理,依靠接口实现

2.2 Cglib动态代理 ,针对类来实现代理的,他的原理是对指定的目标类生成一个子类,

并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。

py-88-阶段面试题相关推荐

  1. 经济学中ppf计算机会成本例题,微观经济学阶段测试试题1-3

    微观经济学阶段测试试题 一.名词解释 机会成本生产的可能性边界(PPF)价格机制 需求供给均衡价格供给量的变动供求定理需求的交叉价格弹性需求的收入弹性限制价格 消费者剩余边际替代率(MRS)替代效应风 ...

  2. 黑马数据库html阶段考试,黑马web阶段web试题学生版.docx

    Web 阶段 Web 试题 1. 动态网站的开发技术有 (A) JSP HTML CSS JavaScript 下面哪个请求头信息可以实现防盗链 (C) Location Refresh Refere ...

  3. 阶段面试题_关于文案、交易系统、付费渗透率、阶段性目标的面试题解答

    政宗的复仇:策划木木 前言 [每日一题]栏目,致力于每天分享一道关于游戏设计的面试题.本篇为一周面试题汇总. 题型有系统向.数值向.运营向和文案向(每天更换). 我们会提供解答参考,同时更加关注提供解 ...

  4. 2020年Java阶段面试题(初)

    文章目录 前言 一.java基础 1 java基础知识 2 集合(必会) 3多线程(必会) 4线程池(高薪必问) 5JVM(高薪必问) 总结 前言 提示:回答面试题时最好面试官问一个点以后,我们自己延 ...

  5. Java微服务阶段面试题

    目录 1.怎么理解微服务架构? 2.SpringCloud等于微服务吗? 3.SpringCloud都有哪些组件,都是做什么的?要说的具体一些 4.SpringCloud架构中,怎么实现各个微服务之前 ...

  6. Gbase8a第一阶段测试-试题整理

    1.GBase 8a集群数据库安装成功后,数据库的初始管理员为root,密码为空.( 正确) 正确 2.有关gcluster_services all stop命令,描述正确的是(B )? A. 关闭 ...

  7. 三阶段面试题——vue

    ■ 符号说明

  8. 二阶段面试题——JavaScript

    ■ 符号说明

  9. HTML阶段笔试题-附答案

      问题:请分别写出HTML中块标签.行标签以及行块标签的特点.(10分) 本题目的:清晰掌握行标签.块标签.行块标签的区别 答案: 块级元素:                (1)独占父级元素一行 ...

  10. WEB_面试题_第三阶段

    第三阶段面试题 一.JavaScript高级 1. 判断以下程序的输出结果: var age=100; function test(){ this.age=50; return function(){ ...

最新文章

  1. 8.2 matlab曲线对象和曲面对象(曲线对象、曲面对象、光照处理、图形对象的反射特性)
  2. spring aop记录日志方案设计
  3. 深入理解CSS盒模型 - 程序猿的程 - 博客园
  4. 【分享】Web前端开发第三方插件大全
  5. 反射与泛型 java_Java的反射 和 泛型的一个问题
  6. 超大福利 | 这款免费 Java 在线诊断利器,不用真的会后悔!
  7. leetcode 1160 python
  8. 最大堆MaxHeap和最小堆MinHeap的实现(转)
  9. Bzoj14981416: [NOI2006]神奇的口袋
  10. 【心电信号】基于matlab心电图峰值检测【含Matlab源码 1548期】
  11. 使用screen来保存你的远程会话
  12. mysql怎么下载_mysql下载安装使用教程
  13. Android开发学习心得 (一) 生如夏花之绚烂,死如秋叶之静美 -- App的生死轮回
  14. U8C报表模板已设置,任务已分配仍无法查看报表数据
  15. connect: cannot assign requested address
  16. 大学生面试着装要求(男生篇)
  17. python中print横向打印
  18. 树莓派4B无线鼠标延迟解决办法
  19. postfix邮件服务器main.cf文件配置说明
  20. Android studio实现开心消消乐游戏界面

热门文章

  1. Linux进程 exec族函数(execl,execlp,execle,execv,execvp,execcvpe)
  2. Python案例实战:天气数据集爬取 + 多组可视化图表分析
  3. Flutter 图片、圆形头像、圆角图片....各种形状
  4. 华为云会议智能会议室助力财通证券加速数字化
  5. 案例研究:海通证券金融云统一云管理平台建设历程
  6. js 实现微信红包算法
  7. 02.自我批判的精神
  8. linux kernel tcp拥塞处理之cubic算法
  9. Lucene In Action 中文版 [1]
  10. Python知识点解析之urlopen()讲解