面试常见问题.docx_第1页
面试常见问题.docx_第2页
面试常见问题.docx_第3页
面试常见问题.docx_第4页
面试常见问题.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中企动力1. List, Set, Map, Linkedlist, TreeSet, VectorList,Set继承Collection接口, Map不是(Map提供key到value的映射);Collection是最基本的集合接口, 一个Collection代表一组Object,即Collection元素;List元素有放入顺序,元素可以重复Map元素按照键值对存储,无放入顺序Set无放入顺序,元素不可重复List接口有三个实现类 LinkedList, ArrayList, VectorLinkedList底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢ArrayList是非线程安全的,效率高Vector是基于线程安全的,效率低Set接口有两个实现类HashSet(底层有HashMap实现)和LinkedHashSetMap接口有三个实现类:HashMap,HashTable,LinkeHashMapHashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null2. if($(“#id”) 这个不能判断id是id的属性是否存在有没有都返回objectif($(“#id”).length 1) 这个判断是对的3. 判断元素$(“div span”) 查找div下所有span 这个可以判断$(“div span”)也可以判断$(#id:disabled) 这个可以查找id是id的disabled属性4. 数组长度判断 name.length 字符串用length() list用size()5. try throw new FileNotFoundException(); catch(IOException ie) System.out.println(“IOException out.”); catch(EOFException ie) 在输入时到达末行和结尾 System.out.println(“EOFException out.”);编译报错在EOFException处6. public class Test public static void main() System.out.println(“aaa”);编译不报错,没有主函数不能执行7. 谈一下MVC, SSH和MVC对应关系struts就是一个mvc框架 m-model v-jsp c-actionstruts - mvc中的chibernate - mvc中的m放入db,dao作用spring - 用作di ioc容器管理整个项目8. 关键字native, then, new, abstract, transient(修饰不要序列化的字段), volatile(标记字段可能会被多个线程同时访问,而不做同步)then不是关键字9. 设计模式观察者模式工厂模式适配器模式单例模式10. spring security 权限 acegiAcegi Security(以下简称Acegi)是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架,Acegi已经成为 Spring官方的一个子项目,所以也称为Spring Security。它通过在Spring容器中配置一组Bean,充分利用Spring的IoC和AOP功能,提供声明式安全访问控制的功能。虽然,现在 Acegi也可以应用到非Spring的应用程序中,但在Spring中使用Acegi是最自然的方式。11. 事务事务的4个特性: 原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全不做。 一致性:数据不会因为事务的执行而遭到破坏。 隔离性:一个事务的执行,不受其他事务(进程)的干扰。既并发执行的个事务之间互不干扰。 持久性:一个事务一旦提交,它对数据库的改变将是永久的。当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的事务环境中,Service接口方法可能会在内部调用其它的Service接口方法以共同完成一个完整的业务操作,因此就会产生服务接口方法嵌套调用的情况,Spring通过事务传播行为控制当前的事务如何传播到被嵌套调用的目标服务接口方法中。实现方式共有两种:编码方式;声明式事务管理方式。基于AOP技术实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。声明式事务管理又有两种方式:基于XML配置文件的方式;另一个是在业务方法上进行Transactional注解,将事务规则应用到业务逻辑中。12. java.lang.loader;java.io.ref13. Spring IOC DI依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者因此也称为依赖注入。spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。设置注入的优点:直观,自然构造注入的优点:可以在构造器中决定依赖关系的顺序。面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面1.面向切面编程提供声明式事务管理2.spring支持用户自定义的切面面向切面编程(aop)是对面向对象编程(oop)的补充,面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象,是对应用执行过程中的步骤进行抽象,从而获得步骤之间的逻辑划分。aop框架具有的两个特征:1.各个步骤之间的良好隔离性2.源代码无关性14. 索引用来干什么,有什么优缺点?15. cookies和session1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中服务器为某个访问者创建一个内存区域,这个就是所谓的session,这个区域的存在是有时间限制的,比如30分钟,这块区域诞生的时候,服务器会给这个区域分配一个钥匙,只有使用这个钥匙才能访问这个区域,这个钥匙即sessionId,之后,服务器把这个sessionId写到访问者的cookie里面,这样,访问者下次访问的时候,会带上这个sessionId,进而让服务器识别出自己,并根据这个sessionId从session区域中取出自己的一些身份信息。所以,禁用cookie之后,cookie中不再回传给网站sessionId,把sessionId写到cookie的网站就无法识别访问者了。还有一种方式,网站可以在返回的url里面,把sessionId以参数的方式渲染到url里,这种方式是不受cookie策略限制的,这样用户点击链接的时候,就会把sessionId带给服务器,这样服务器也能识别出访问者来。16. O/RMapping是指对象关系映射.是模型层的一种处理对像的方式.举个例吧:就是如何把一个对象的各种状态保存到数据库里面Object Relationship Mapping(简称ORMapping)是将数据库表映射为面向对象系统中的类,表中的每一条记录则对应为该类的一个具体对象的技术17. Hibernate延迟加载通过将class的lazy属性设置为true,来开启实体的延迟加载特性。如果我们运行下面的代码:User user=(User)session.load(User.class,1);(1)System.out.println(user.getName();(2)当运行到(1)处时,Hibernate并没有发起对数据的查询,如果我们此时通过一些调试工具(比如Eclipse的Debug工具),观察此时user对象的内存快照,我们会惊奇的发现,此时返回的可能是User$EnhancerByCGLIB$bede8986类型的对象,而且其属性为null,这是怎么回事?session.load()方法会返回实体对象的代理类对象,这里所返回的对象类型就是User对象的代理类对象。在Hibernate中通过使用CGLIB,来实现动态构造一个目标对象的代理类对象,并且在代理类对象中包含目标对象的所有属性和方法,而且所有属性均被赋值为null。通过调试器显示的内存快照,我们可以看出此时真正的User对象,是包含在代理对象的CGLIB$CALBACK_0.target属性中,当代码运行到(2)处时,此时调用user.getName()方法,这时通过CGLIB赋予的回调机制,实际上调用CGLIB$CALBACK_0.getName()方法,当调用该方法时,Hibernate会首先检查CGLIB$CALBACK_0.target属性是否为null,如果不为空,则调用目标对象的getName方法,如果为空,则会发起数据库查询,生成类似这样的SQL语句:select * from user where id=1;来查询数据,并构造目标对象,并且将它赋值到CGLIB$CALBACK_0.target属性中。这样,通过一个中间代理对象,Hibernate实现了实体的延迟加载,只有当用户真正发起获得实体对象属性的动作时,才真正会发起数据库查询操作。所以实体的延迟加载是用通过中间代理类完成的,所以只有session.load()方法才会利用实体延迟加载,因为只有session.load()方法才会返回实体类的代理类对象。18. Error和ExceptionError:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception:表示可恢复的例外,这是可捕捉到的19. linux常用命令杀掉进程ps ef|grep java kill -9 pid查询被占用的端口 netstat -apn查看tomcat日志信息 tail f catalina.out20. 举几个java runtime exception但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。java关键字描述列表abstract /抽象方法,抽象类的修饰符assert /断言条件是否满足boolean /布尔数据类型break /跳出循环或者label代码段byte /8-bit 有符号数据类型case /switch语句的一个条件catch /和try搭配扑捉异常信息char /16-bit Unicode字符数据类型class /定义类const /未使用continue /不执行循环体剩余部分default /switch语句中的默认分支do /循环语句,循环体至少会执行一次double /64-bit双精度浮点数else /if条件不成立时执行的分支enum /枚举类型extends /表示一个类是另一个类的子类final /表示一个值在初始化之后就不能再改变了/表示方法不能被重写,或者一个类不能有子类finally /try 语句不管是否发生异常都要执行的语句块float /32-bit单精度浮点数for /for循环语句goto /未使用if /条件语句implements /表示一个类实现了接口import /导入类instanceof /测试一个对象是否是某个类的实例int /32位整型数interface /接口,一种抽象的类型,仅有方法和常量的定义long /64位整型数native /表示方法用非java代码实现new /分配新的类实例package /一系列相关类组成一个包private /表示私有字段,或者方法等,只能从类内部访问protected /表示字段只能通过类或者其子类访问/子类或者在同一个包内的其他类public /表示共有属性或者方法return /方法返回值short /16位数字static /表示在类级别定义,所有实例共享的strictfp /浮点数比较使用严格的规则super /表示基类switch /选择语句synchronized /表示同一时间只能由一个线程访问的代码块this /表示调用当前实例/或者调用另一个构造函数throw /抛出异常throws /定义方法可能抛出的异常transient /修饰不要序列化的字段try /表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码void /标记方法不返回任何值volatile /标记字段可能会被多个线程同时访问,而不做同步while /while循环创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。按alphabeta排列简介如下。Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变化。Builder(建造者模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Chain of Responsibility(职责链模式):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。Command(命令模式):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。Composite(组合模式):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。Decorator(装饰模式):动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。Facade(外观模式):为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Factory Method(工厂模式):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。Flyweight(享元模式):运用共享技术有效地支持大量细粒度的对象。Interpreter(解析器模式):给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。Iterator(迭代器模式):提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。Med

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论