ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:38.12KB ,
资源ID:2158713      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2158713.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java工程师找工作中面试遇到的专业知识问题总结.docx)为本站会员(微传9988)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

java工程师找工作中面试遇到的专业知识问题总结.docx

1、java工程师找工作中面试遇到的专业知识问题总结篇一:java 工程师面试总结一.autowired 和resource 的区别Resource 的作用相当于Autowired,只不过Autowired按 byType自动注入,而Resource 默认按 byName自动注入罢了。Resource 有两个属性是比较重要的,分是 name和 type,Spring 将Resource 注解的 name属性解析为 bean的名字,而 type属性则解析为 bean的类型。所以如果使用 name属性,则使用 byName的自动注入策略,而使用 type属性时则使用 byType自动注入策略。如果既不

2、指定 name也不指定 type属性,这时将通过反射机制使用 byName自动注入策略。Resource 装配顺序1. 如果同时指定了 name和 type,则从 Spring上下文中找到唯一匹配的 bean进行装配,找不到则抛出异常2. 如果指定了 name,则从上下文中查找名称(id)匹配的 bean进行装配,找不到则抛出异常3. 如果指定了 type,则从上下文中找到类型匹配的唯一 bean进行装配,找不到或者找到多个,都会抛出异常4. 如果既没有指定 name,又没有指定 type,则自动按照 byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;f

3、inal 可用来修饰类,变量,方法。修饰变量:final 修饰变量时,表示该变量一旦获得了初始值之后就不可改变。1.修饰成员变量: 与普通成员变量不同的是,final成员变量(实例属性和类属性)必须由程序员显示初始化,系统不会对 final成员变量进行隐式初始化。非 final修饰的成员变量初始化过程:当进行静态初始化时,可对类属性初始化,当执行普通初始化块,构造器时可对实例属性初始化,因此:非 final成员变量的初始值,可以在定义该变量时指定初始值,可以在初始化块,构造器中执行初始化值,否则成员变量的初始值是由系统自动分配的初始值。 final 修饰的类属性,实例属性指定初始值的地方:类属

4、性:静态初始化块,声明该属性时指定初始值。实例属性:非静态初始化块,构造器,声明该属性时指定初始化值。二.final 修饰局部变量: 1.系统不会对局部变量进行初始化,必须由程序员显示初始化。如果在定义 final变量时没有指定初始值,则可以在后面代码中进行对 final变量赋初始值,但只能一次,不能重复赋值, ,如果 final修饰的局部变量在定义时已经指定默认值,则后面的代码中不能再对该变量赋值。修饰形参不能被赋值,因为形参在调用该方法时,有系统传入的参数来完成初始化。修饰基本类型变量与引用类型变量的区别:修饰基本类型变量时,不能对基本变量重新赋值,因为基本类型变量不能被改变。修饰引用类型

5、变量时,仅仅保持的是这个引用所引用的地址不会改变,既一直引用同一个对象。但这个对象完全可以改变(对象的属性)例如: final person p = new person(); /改变 person对象的 age属性,合法。 (23);/对 p引用重新赋值,不合法。 p = null; 注意:如果 final修饰变量是基本数据类型,且在编译时就可以确定该变量的值,于是把该变量当做常量来处理:常量命名规则:多个有意义的单词连接,所有字符大写,单词之间用下划线分割。 如果 final修饰变量是引用类型,final 变量无法在编译时就获得值,而必须在运行时才能得到值如:final TestClass

6、 t = new TestClass();编译时系统不会创建一个 TestClass对象赋给 t 变量,所以 t不需要当做常量来处理,无需使用常量命名规则。 方法:修饰的方法不可被重写。提供的 Object类有一个 final方法:getClass(),因为 java不希望任何一个类重写这个方法。3.对于 private 方法,仅在当前类中可见,子类无法访问,所以也就无法重写该方法,如果子类中定义了一个与父类 private方法有相同方法名,相同形参列表,相同返回值类项的方法,也不是方法重写,只是重新定义了一个方法,因此使用 final修饰的一个 private 访问权限的方法,依然可以在其子

7、类中定义与该方法有相同方法名,相同形参列表,相同返回值类型的方法。修饰的方法不能被重写但完全可以被重载。类:修饰的类不可有子类,类就是一个 final类,它不可以有子类。三 JQuery 绑定事件的方法.bind()$(a).bind(click, function() alert(“That tickles!“) );这是最直接的绑定方法。jQuery 扫描文档找到所有 $(a) 元素,然后给每一个找到的元素的 click 事件绑定处理函数。.live() $(a).live(click, function() alert(“That tickles!“) );Query 绑定处理函数到 $

8、(document) 元素,并把 click 和 a 作为函数的参数。有事件冒泡到document节点的时候,检查这个事件是不是 click 事件,target element能不能匹配 a css选择器,如果两个条件都是 true,处理函数执行。.delegate()$(#container).delegate(a, click, function() alert(“That tickles!“) ); jQuery扫描文档找到 $(#container),绑定处理函数到他的 click 事件, a css选择器作为函数的参数。当有事件冒泡到 $(#container),检查事件是不是 cl

9、ick,并检查 target element是不是匹配 css选择器,如果两者都符合,执行函数。注意这次和 .live() 方法很相似,除了把事件绑定到特定元素与跟元素的区别。精明的 JSer 或许会总结成 $(a).live() = $(document).delegate(a),真的是这样吗? 不,不全是。四。spring 事务管理Spring+Hibernate 的实质:就是把 Hibernate用到的数据源 Datasource,Hibernate 的 SessionFactory实例,事务管理器 HibernateTransactionManager,都交给 Spring管理。那么再

10、没整合之前 Hibernate是如何实现事务管理的呢?通过 ServletFilter实现数据库事务的管理,这样就避免了在数据库操作中每次都要进行数据库事务处理。一.事务的 4个特性:原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做。一致性:数据不会因为事务的执行而遭到破坏。隔离性:一个事务的执行,不受其他事务(进程)的干扰。既并发执行的个事务之间互不干扰。持久性:一个事务一旦提交,它对数据库的改变将是永久的。二.事务的实现方式:实现方式共有两种:编码方式;声明式事务管理方式。基于 AOP技术实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后在目标方

11、法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。声明式事务管理又有两种方式:基于 XML配置文件的方式;另一个是在业务方法上进行Transactional注解, 将事务规则应用到业务逻辑中。三.创建事务的时机:是否需要创建事务,是由事务传播行为控制的。读数据不需要或只为其指定只读事务,而数据的插入,修改,删除就需要事务管理了。一种常见的事务管理配置:事务拦截器TransactionInterceptor和事务自动代理BeanNameAutoProxyCreator相结合的方式。五。oracle 通用函数sum(),max(),min(),count(),decode(),

12、case, avg(),to_date(),如 nvl(字段, x)字段值等于 null就这个函数得到的结果就是x,ABS(x) 函数,此函数用来返回一个数的绝对值。CEIL(x)函数,用来返回大于或等于 X的最小整数。FLOOR(x)函数,用来返回小于或等于 X的最大整数。ROUND(x,y)函数,返回舍入到小数点右边 Y位的 X值。Y 缺省为 0,这将 X舍入为最接近的整数。如果 Y是负数, 那么舍入到小数点左边相应的位上,Y 必须为整数。Select CONVERT(varchar(100), GETDATE(), 23): XX-05-16CONVERT(data_type(lengt

13、h),data_to_be_converted,style)data_type(length) 规定目标数据类型(带有可选的长度) 。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。六.oracle 存储过程1.存储过程异常处理create or replace procedure peace_insert ( c_n in varchar2)iserror EXCEPTION;beginif c_n = OKtheninsert into course (course_name) values (c_n);elsif c_n = NG the

14、ninsert into course (course_name) values (c_n);raise error;elseDbms_line(c_n | c_n);end if;commit;exceptionwhen error thenrollback;Dbms_line(ERRO);end;关于 游标 if,for 的例子 create or replace procedure peace_ifiscursor var_c is select * from grade;beginfor temp in var_c loopif _name = OS thendbms_line(Stu

15、_name = |_name);elsif _name = DB thendbms_line(DB);elsedbms_line(feng la feng la );end if;end loop;end;-关于游标 for,case 的例子 1create or replace procedure peace_case1iscursor var_c is select * from test_case;beginfor temp in var_c loopcasewhen 1 thendbms_line(haha1);when 2 thendbms_line(haha2);when 3 th

16、endbms_line(haha3);when 4 thendbms_line(haha4);elsedbms_line(qita);end case ;end loop;end;七。java 对象作用范围Java 对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除。因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3。其中 T1表示对象的创建时间,T2 表示对象的使用时间,而 T3则表示其清除时间。由此,我们可以看出,只有 T2是真正有效的时间,而 T1、T3 则是对象本身的开销。下面再看看 T1、T3 在对象的整个生命周期中所占的比例。我们知道,Ja

17、va 对象是通过构造函数来创建的,在这一过程中,该构造函数链中的所有构造函数也都会被自动调用。另外,默认情况下,调用类的构造函数时,Java 会把变量初始化成确定的值:所有的对象被设置成 null,整数变量(byte、short、int、long)设置成 0,float 和double变量设置成,逻辑值设置成 false。所以用 new关键字来新建一个对象的时间开销是很大的,如表 1所示。表 1 一些操作所耗费时间的对照表运算操作 示例 标准化时间本地赋值 i = n实例赋值 = n方法调用 Funct()新建对象 New Object() 980新建数组 New int10 3100从表 1

18、可以看出,新建一个对象需要 980个单位的时间,是本地赋值时间的 980倍,是方法调用时间的 166倍,而若新建一个数组所花费的时间就更多了。再看清除对象的过程。我们知道,Java 语言的一个优势,就是 Java程序员勿需再像 C/C+程序员那样,显式地释放对象,而由称为垃圾收集器(Garbage Collector)的自动内存管理系统,定时或在内存凸现出不足时,自动回收垃圾对象所占的内存。凡事有利总也有弊,这虽然为Java程序设计者提供了极大的方便,但同时它也带来了较大的性能开销。这种开销包括两方面,首先是对象管理开销,GC 为了能够正确释放对象,它必须监控每一个对象的运行状态,包括对象的申

19、请、引用、被引用、赋值等。其次,在 GC开始回收“垃圾”对象时,系统会暂停应用程序的执行,而独自占用 CPU。因此,如果要改善应用程序的性能,一方面应尽量减少创建新对象的次数;同时,还应尽量减少 T1、T3 的时间,而这些均可以通过对象池技术来实现。实现一个对象池,一般会涉及到如下的类: 1)对象池工厂(ObjectPoolFactory)类该类主要用于管理相同类型和设置的对象池(ObjectPool) ,它一般包含如下两个方法: createPool:用于创建特定类型和设置的对象池;destroyPool:用于释放指定的对象池;同时为保证 ObjectPoolFactory的单一实例,可以采

20、用 Singleton设计模式,见下述 getInstance方法的实现:public static ObjectPoolFactory getInstance() if (poolFactory = null)篇二:我常用的十个中级 java工程师面试题1,如何理解多态?类与对象的区别是什么?2,如何理解()方法,它的作用是什么? 3,Collections 类的作用?Arrays 类的作用? 4,问号,星号,加号在正则中分别表示什么?成对的小括号在正则表达式里的作用是什么? 5,JSP 文件与 JAVA文件的区别 6,forward 和 redirect的区别 7,oracle: A 表有

21、 10条记录,以下查询可以查出几条?select * from A where rownum 58,mysql 有几种索引类型?使用索引时都有那些地方要注意?sql 优化原则? mysql用那个关键字分析 sql语句性能? 9, public static void test(String str) str = “hello“;public static void main (String args) String str = “beijing“;test(str);sysout(str); / 这里输出什么?10,linux 下ulimit, scp, less 命令的作用分别是什么?文件重

22、命名的命令是什么?篇三:java 软件工程师面试常见问题1、面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类) ,而原始类称为新类的基类(父类) 。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加

23、新的方法使之更适合特殊的需要。3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。2、String 是最基本的数据类型吗基本数据类型包括byte、int、char、long、float、double、boolean 和short。类是 final类型的,因此不可以继承这个类、

24、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类3、int 和 Integer 有什么区别Java 提供两种不同的类型:引用类型和原始类型(或内置类型) 。Int 是 java的原始数据类型,Integer 是 java为 int提供的封装类。Java 为每个原始类型提供了封装类。原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:

25、大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。4、String 和 StringBuffer的区别JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据

26、。5、运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。6、说出 Servlet的生命周期,并说出 Servlet和 CGI的区别。Servlet 被服务器实例化后,容器运行其 init方法,请求到达时运行其 service方法,service 方法自动派遣运行与请求对应的 doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy方法。与 cgi的区别在于 s

27、ervlet处于服务器进程中,它通过多线程方式运行其 service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。7、说出 ArrayList,Vector, LinkedList的存储性能和特性ArrayList 和 Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了 synchronized方法(线程安全) ,通常性能上较 ArrayLi

28、st差,而 LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历8、EJB 是基于哪些技术实现的?并说出 SessionBean和 EntityBean的区别,StatefulBean 和 StatelessBean的区别。 EJB包括 Session Bean、Entity Bean、Message Driven Bean,基于 JNDI、RMI、JAT 等技术实现。SessionBean 在 J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他 EJB组件。EntityBean被用来代表应用系统中用到的数据。对于客户机,SessionBea

29、n 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateles

30、s Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean

31、会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。9、Collection 和 Collections 的区别。Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。10、 s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错short s1 = 1; s1 = s1 + 1; (s1+1 运算结果是 int型,需要强制转换类型)sho

32、rt s1 = 1; s1 += 1;(可以正确编译)26、()等於多少 (-)等於多少()=12(-)=-11round 方法返回与参数最接近的长整数,参数加 1/2后求其 floor.27、String s = new String(“xyz“);创建了几个String Object两个28、设计 4个线程,其中两个线程每次对 j增加 1,另外两个线程对 j每次减少 1。写出程序。以下程序使用内部类实现线程,对 j增减的时候没有考虑顺序问题。public class ThreadTest1private int j;public static void main(String args)T

33、hreadTest1 tt=new ThreadTest1();Inc inc= Inc();Dec dec= Dec();for(int i=0;i Thread t=new Thread(inc);();t=new Thread(dec);();private synchronized void inc()j+;().getName()+“-inc:“+j);private synchronized void dec()j-;().getName()+“-dec:“+j);class Inc implements Runnablepublic void run()for(int i=0;i

34、 inc();class Dec implements Runnablepublic void run()for(int i=0;i dec();29、Java 有没有 gotojava 中的保留字,现在没有在 java中使用。30、启动一个线程是用 run()还是 start()启动一个线程是调用 start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由 JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。31、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?SessionB

35、ean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个 Bean的实例时,EJB 容器不一定要创建一个新的 Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个 Stateful Session Bean 时,容器必须立即在服务器中创建一个新的 Bean实例,并关联到客户机上,以后此客户机调用 Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的 Bean实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,E

36、ntity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使 EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans 自己管理。EJB 通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS) ,Sun Microsystems的 Transaction Service(JTS) 、Java Transaction API(JTA) ,开发组(X/Open)的 XA接口。32、应用服务器有那些?BEA WebLogic Server,IBM WebSphere Application Server,Oracl

37、e9i Application Server,jBoss,Tomcat33、给我一个你最常见到的 runtime exception。ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException,EmptyStackException,IllegalStateException, ClassCastException, CMMException, ConcurrentModification

38、Exception, DOMException, IllegalArgumentException, ImagingOpException, IllegalMonitorStateException, IndexOutOfBoundsException, IllegalPathStateException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, Rast

39、erFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException34、接口是否可继承接口 抽象类是否可实现(implements)接口 抽象类是否可继承实体类(concrete class)接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。35、List, Set, Map 是否继承自 Collection接口List,Set 是,Map 不是36、说出数据连接池的工作机制是什么J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报