java电话面试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. Java的基础知识
String 拼接 的替代操作? StringBuffer 和 StringBuilder(线程不安全,但速度比StringBuffer快)
stringbuffer可变
Java的多线程的两种实现方式
继承thread,实现runable接口
Java中key,value 这样的数据结构有那些?
hashmap,hashtable
Set 和 List 的区别?
set无序不重复
vector 是啥?
线程安全的arraylist
这一部分主要是考察的基础知识,可惜我的基础还不够扎实,还得努力,要经常地翻翻api,要尝试寻找新的方法实现原来的固定做法。
2. JDBC
statement,prepareStatement 的区别
1是简单的sql执行 2有缓冲区,可带参数的sql执行
数据库事务隔离级别? 四种哦!
1、未提交读(Read Uncommitted)
直译就是"读未提交",意思就是即使一个更新语句没有提交,但是别
的事务可以读到这个改变.这是很不安全的。允许任务读取数据库中未提交的数据更改,也称为脏读。
2、提交读(Read Committed)
直译就是"读提交",可防止脏读,意思就是语句提交以后即执行了COMMIT以后
别的事务就能读到这个改变. 只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别
3、可重复读(Repeatable Read):
直译就是"可以重复读",这是说在同一个事务里面先后执行同一个查询语句的时候,得到的结果是一样的.在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读
4、串行读(Serializable)
直译就是"序列化",意思是说这个事务执行的时候不允许别的事务并发执行. 完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
3. 数据结构
数组,栈,堆,树,链表,队列,散列表。
4. 开源的一些框架
主要是ssh
struts,struts2的主要区别?(在说这个问题上,我好像没有说很多,我自己的毛病就在这,不是很主动)
action struts里面action是继承了一个抽象基类,单例的线程安全的。2的action可以实现一个aciton接口,可以是简单的pojo对象,给每个请求都产生一个action实例。
servlet 依赖,struts依赖于servlet api 当action被调用时 httpservletrequest,httpservletresponse被传递给execute方法,struts2不依赖容器,但是必要也可访问
struts1支持jstl el ,2支持ognl一个强大的表达式语言
struts1使用actionform作为对象捕获输入,2使用action属性作为输入属性
谈谈你对spring 的 ioc 看法!
5. 设计模式
他只问了我一个单例模式
spring 单例模式,工厂模式,代理模式。
6. linux系统的相关操作
linux下的常用操作,命令要熟记。
7. webservice
当前,WebService是一个
热门话题。但是,WebService究竟是什么?什么情况下应该用WebService?什么情况下不应该用WebService?是需要我们正确认识的。
Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。由此可以看出,在以下三种情况下,使用WebService会带来极大的好处。
长项一:跨防火墙的通信
如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。
长项二:应用程序集成
企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在IBM主机上的程序中获取数据;或者把数据发送到主机或UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过WebService,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。
例如,有一个订单登录程序,用于登录从客户来的新订单,包括客户信息、发货地址、数量、价格和付款方式等内容;还有一个订单执行程序,用于实际货物发送的管理。这两个程序来自不同软件厂商。一份新订单进来之后,订单登录程序需要通知订单执行程序发送货物。通过在订单执行程序上面增加一层WebService,订单执行程序可以把“AddOrder”函数“暴露”出来。这样,每当有新订单到来时,订单登录程序就可以调用这个函数来发送货物了。
长项三:B2B的集成
用WebService集成应用程序,可以使公司内部的商务处理更加自动化。但当交易跨越供应商和客户、突破公司的界限时会怎么样呢?跨公司的商务交易集成通常叫做B2B集成。
WebService是B2B集成成功的关键。通
过WebService,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。当然,这并不是一个新的概念,EDI(电子文档交换)早就是这样了。但是,WebService的实现要比EDI简单得多,而且WebService运行在Internet上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,WebService并不像EDI那样,是文档交换或B2B集成的完整解决方案。WebService只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。
用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受EDI的中小企业也能实现B2B集成。
短处一:单机应用程序
目前,企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程序通信。在这种情况下,最好就不要用WebService,只要用本地的API就可以了。
短处二:局域网的同构应用程序
在许多应用中,所有的程序都是用VB或VC开发的,都在Windows平台下使用COM,都运行在同一个局域网上。例如,有两个服务器应用程序需要相互通信,或者有一个Win32或WinForm的客户程序要连接局域网上另一个服务器的程序。在这些程序里,使用DCOM会比SOAP/HTTP有效得多。
总之,只要从应用程序结构的角度看,有别的方法比WebService更有效、更可行,那就不要用WebService
我回答的不是很理想,我做过但是没完整的说出来。。。
8. 谈谈你自己做过的一些项目。
在这里主要他想知道你有没有从事过分布式的项目,有没有接触过处理高并发的数据库的经验,可惜我么有!
1.Java 当中所有的对象都是默认继承与Object类,请问该类中常用的方法有哪些?
ng.Object类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
public native int hashCode();//返回该对象的哈希码值
public String toString() //返回该对象的字符串表示。
{
return getClass().getName() + ”@” + Integer.toHexString(hashCode());
}
public boolean equals(Object obj) //返回其他某个对象是否与此对象“相等”。 注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希
码。
String类重写了equals()和hashCode()方法,可以参考
protected void finalize() throws Throwable {}
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。
protected native Object clone() throws CloneNotSupportedException;
创建并返回此对象的一个副本.所有要进行”克隆”的对象所属的类必须实现ng.Cloneable接口
2.Java 中的反射机制实现原理、常用方法?
在Java运行环境中,对于任意的一个类,能否知道这个类有哪些属性和方法?对于任意一个类,能否调用它的任意一个方法?可以。这种动态的获取类的基本信息以及动态的调用对象方法的功能来自于java语言的反射(Reflection)机制.
java reflection 主要提供如下功能:
1.在运行时,判断任意一个对象所属的类.
2.在运行时,构造任意一个类的对象.
3.在运行时,判断任意一个类所具有的成员变量和方法.
4.在运行时,调用任意一个对象的方法.
在JDK中,由以下类来实现Reflection,这些类位于ng.reflect包中:
1.Class类:代表一个类.
2.Filed类:代表类的成员变量(成员变量也称为类的属性.)
3.Method类:代表类的方法。
4.Constructor类:代表了类的构造方法。
5.Array类:提供了动态创建数组,以及访问数组元素的静态方法。
(Reflection API的应用小例子,接下来会写.)
3.Struts1.2 or Struts 2 的实现原理,简单陈述一个请求的处理流程?
Struts 1.2 实现原理如下:
1.web应用启动时加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中(Action的映射信息存放在ActionMapping对象中.)
2.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息.
3.如果ActionForm实例不存在,创建一个ActionForm对象,把客户提交的表单信息保存到ActionForm对象中.
4.根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的validate()方法.
5.如果ActionForm的validate()方法返回null 或者一个不包含ActionMessage的ActionErrors对象,表示表单验证成功.
6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户端请求转发给ActionFoward对象指向的jsp组件.
7.ActionForward对象指向jsp组件生成动态页面,返回客户端浏览器.
4.Struts1.x 和 Struts2.x 版本那一个是线程安全的?线程安全的定义是?
Struts 1.2 版本是线程安全的.原因如下:
1.Struts 1.2 的Action类是单例模式,因为只有一个实例来控制所有的请求.Action资源必须是线程安全或者同
步的.
2.Struts 2.0的Action对象为每一次请求都生成新的对象,所以没有线程安全的问题.(据资料,Servlet容器产生对于每一个请求产生多个对象并不影响垃圾回收.)
Java线程安全(通俗描述):在线程中使用[共享资源]时,能够保证[共享资源]在任何时候都是原子的、一致的,这样的线程就是安全线程;反之则为非安全线程.
5.如果你来设置Session(前端的回话Session而非Hibernate中的Session),你将如何实现它?
6.Hibernate的优点有哪些?
7.Javascript Dom结构,常见的使用方法举例?
暂时将问题列出来,晚上回家后,再一一解答.其实回顾一下这些问题,都是最基本且应该掌握的问题, 可往往在项目当中为了实现而实现,而很少去考虑底层是如何实现,为什么要这么做? 不仅让我想起来前些日子在twitter上说的一句话:”架构师的道路其实也是”what”,”how”,”why”的过程.” 我还有很长的路要走.
刚才接了个电话,属于电话面试,挂了电话才知道自己是多么的无知。下面把面试问题列举如下,答案等我有时间了再填写吧。自我介绍是必须的,我介绍一分钟后下面开始:
1、数据库sql语言: 如何过滤人员表里面姓名相同的数据?
distinct
2、Hibernate的高级优化如何做?
3、Spring的AOP如何使用,annotation的使用?
注解声明,xml配置声明。
4、Spring bean的作用域都有哪些?
request,session ,global session
5、简单说说JDK1.5的新特性?
6、如何避免Struts2的表单重复提交?
7、说说你使用过的Sql优化?
大表在前,*避免用,in 少用,索引,
8、java的设计模式请说出几个并说明原理?
单例模式 工厂模式 代理模式
9、如果一个树有父节点和子节点,你选用哪种设计模式?
10、简要谈谈你的优缺点,一分钟时间?
这些题目我觉得没有三年以上的项目工作经验是不好全部回答正确的。我也是用了我最大的努力,仔细思考,才回答完毕。回答的不是很好,最起码我是这么感觉的。不知大家看到我认为比较经典的题目有何想法,欢迎解决问题。
1.熟悉的J2EE的内容有哪些。
JSP,SERVLET,EJB,JDBC,JNDI
2.解释一下Spring的核心内容,解释一下IOC,AOP,IOC的2个核心类,BeanFactory的生命周期,有没有使用过AOP,除了IOC,AOP,Spring还有哪些内容,用过哪些。如果需要自己写的话,Spring的IOC应该如何实现?
IOC控制反转,AOP面向方面编程(权限,事务等),Bean的生命周期
实例化,依赖注入,初始化,销毁,释放内存
3.ORM框架除了Hibernate还用过什么?
Ibatis
4.说
一下Java Collection Framework中的类分别是用什么数据结构实现的,我大概说了 LinkedList,ArrayList,HashMap,TreeMap,LinkedHashMap,PriorityQueue等然后问自己动手实现过那种数据结构。
LInkedlist 链表 arraylist object数组 Stack 堆栈
5.如果在多线程的情况下,应该如何使用CollectionFramework
合理使用锁
6.多线程用得怎么样?解释一下Java中Lock的几种类型,(我回答说不清楚,我只清楚操作系统中学的排它锁和共享锁),然后问一个方法,是public synchronized put(),这个方法用的属于什么锁?
同步锁,读写锁,互斥锁
7.说一下你相对于其他同学的优势,平时都是如何学习的,自己学习过哪些技术,遇到问题如何解决的,举个例子说明解决问题的能力。
8.简单的算法题,N个人围成一圈,从第a个人开始,每隔b个人报数,报数者出列,如何输出出列的顺序。我当时不敢相信就是能用循环链表解决的问题,我说我的第一感觉是用循环链表,然后把思路讲了一下,面试官然后问用Java怎么实现循环链表。
9.如何限制团队成员在JSP中实现业务逻辑?(我不会)在表现层,除了用过JSP还用过什么?在多个人一起开发的时候,大家一起修改web.xml会引起很多冲突,如何解决这个冲突?Servlet的生命周期。
1.规则,2ASP,PHP,HTML 3,版本管理svn cvs 4servlet1.实例化2初始化3服务4摧毁5释放内存
然后问了他3个问题,1,阿里巴巴招聘时看重的素质或能力,答曰,潜力,综合能力,应届生的技术肯定达不到要求,但是如果有潜力阿里巴巴会继续培养,2.如果能进入阿里巴巴实习,有多少机会能留在阿里巴巴,答曰,阿里巴巴很希望实习生能留下,只要能通过考核就行。3.实习有几轮,答曰,不清楚,公司分配下来的,具体后来HR会联系。
今年4月17日,阿里巴巴到深圳招聘,受君锐的推荐,我也报着尝试与有机会不放过的心理去参加了面试,毕竟长年这样没完没了的跑来跑去也不是个办法;面试地址是在上海宾馆,来的人挺多的,估计有好几百,因为来招聘的人就有十几个,并且是从上午一直到下午,简单的了解了一下,从销售到工程师,再到架构师都在招,看来是准备从深圳带走一批人才了。
面试总共分三关,一是技术面试,二是非技术高层领导面试,三是最后的人事面谈,我想应该是要通过了前一关才能够继续后面的吧。
技术面试
进入技术面试之前,先要做一套相应的试题,这里面涉及到几个平常不怎么注意的问题:
一个是没有定义访问范围的构造函数,就是前面未加public、protected或private限制等,这个我搞错了,忘
了未定认就是protected,自己选择了会编译报错;
第二个是页面中定义两个同名的JS函数,调用会是什么结果,可以平时写程序都还小心,都没有碰以过,后面尝试了一下不报错,会调用第二个方法;
另外有个名词:领域模型;
其它都比较常见了,如让画一个流程图、常用的模式(会问你常用什么模式,如我提到有单例模式,就让我现场写了一个单例模式的例子)、Servlet是否线程安全的、静态变量的赋值等,这些如果是基础扎实,都还算简单,没有必要做什么特别的面试前准备,就算准备了也不一定有什么效果,毕竟面试这个东西谁也说不清楚他要问一些什么。
技术高层面试
个人感觉比较有意思,也比较有难度,不过说难度也谈不上,主要是一些智力上的问题,以及言谈举止的观察;坐下去的时候,首先对方给了我一张名片,上面写的职位是资深总监,我首先入题,说“总监,这个也是我的奋斗目标......”,在这些问题上聊了一会儿后,大家打破了面试的尴尬,应该说我先入为主了吧,后面他问了我如下几个问题:
第一,请谈一下自己生活中记忆较深刻的事情,什么都可以,最后根据说的事情,让我做一个推广的总结;
第二,说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少;这个问题我以为是什么智力问题,因为也看过不少有些面试官问问题,不一定要得到你的标准答案或者说根本就没有答案,他们只是想看到你对问题的处理能力,我就往社会问题上答“如果社会不平衡......”,答了一会儿,他说不要将这个理解为社会问题,就是一个简单的数学计算题,呵,这可难为我了,最终没有答上来;
第三,3点15的时针和分针的夹角是多少度,这个简单,可是我回答了三次才答对,汗;
第四,有8瓶水,其中有一瓶有毒,最少尝试几次可以找出来,呵,这个我答了两次,最少需要三次,不错;
其中的面试的时候,不仅仅只有这些问题,还会问题了解阿里巴巴多少等等,这个就看个人的言谈能力了。其间我变谈到我从事过英文口语教师,并且工作中从事过口语翻译,他就问我可否用英语聊聊,幸好我的口语不错,谈了大概有5分钟吧,问答都没有问题,我相信这个会为我的面试增加一些印象,因为我面试的工作就是阿里巴巴的国际B2B平台做开发,看为英文这次又帮了我的忙了。
人力资源的面试
这个个人感觉是最难的,为什么呢,因为明明彼此
没有共同语言去还要找出共同语言来聊,并且他们很多都是心理专家,如果稍有不慎,被他们抓住某个问题,你就惨了,当然和人力资源的最终会引出一个话题,那就是薪资的问题,这个就看个人具体发挥了。
总结
我们是程序员,成天面对只有电脑,但是也别忘了提高自己的沟通与人际交往能力,平时工作的时候说话的时候较少,那就多看一些中国新闻,如什么地方拆迁呀、什么派出所睡觉死等等,用于增强自己心脏的活力以及思考能力,这样在应对面试官特别是挑剔的面试官的时候,才会有侃的资本。
1.5新功能
泛型
设定参数具体类型,编译时判定
自动装箱
包装类和基本类型自动转换
可变参数
不用重载了
for-each循环
简化循环写法
枚举类型
一种新的类型
静态导入
import static 直接用
1.6新功能
一:Desktop类和SystemTray类
在JDK1.6中,AWT新增加了两个类:Desktop和SystemTray。
前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序。
二:使用JAXB2来实现对象与XML之间的映射
JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。
我们把对象与关系数据库之间的映射称为ORM,其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping)。原来JAXB是Java EE的一部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。
实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用StAX(JSR 173)来处理XML文档。除了JAXB之外,我们还可以通过XMLBeans和Castor等来实现同样的功能。
三:理解StAX
StAX(JSR 173)是JDK1.6.0中除了DOM和SAX之外的又一种处理XML文档的API。
StAX 的来历:在JAXP1.3(JSR 206)有两种处理XML文档的方法:DOM(Document Object Model)和SAX(Simple API for XML)。
由于JDK1.6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都会用到StAX所以Sun决定把StAX加入到JAXP家族当中来,并将JAXP的版本升级到1.4(JAXP1.4是JAXP1.3的维护版本)。JDK1.6里面JAXP的版本就是1.4。
StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API.StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档
解析过程,程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符;
SAX也是基于事件处理xml文档,但却是用推模式解析,解析器解析完整个xml文档后,才产生解析事件,然后推给程序去处理这些事件;DOM采用的方式是将整个xml文档映射到一颗内存树,这样就可以很容易地得到父节点和子结点以及兄弟节点的数据,但如果文档很大,将会严重影响性能。
四:使用Compiler API
现在我 们可以用JDK1.6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。
这个特性对于某些需要用到动态编译的应用程序相当有用,比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以用Compiler API来实现动态编译JSP文件,当然,现在的JSP Web Server也是支持JSP热部署的,现在的JSP Web Server通过在运行期间通过Runtime.exec或ProcessBuilder来调用javac来编译代码,这种方式需要我们产生另一个进程去做编译工作,不够优雅而且容易使代码依赖与特定的操作系统;Compiler API通过一套易用的标准的API提供了更加丰富的方式去做动态编译,而且是跨平台的。
五:轻量级Http Server API
JDK1.6 提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给 HttpHandler实现类的回调方法。
六:插入式注解处理API(Pluggable Annotation Processing API)
插入式注解处理API(JSR 269)提供一套标准API来处理Annotations(JSR 175)
实际上JSR 269不仅仅用来处理Annotation,我觉得更强大的功能是它建立了Java 语言本身的一个模型,它把method,package,constructor,type,variable, enum,annotation等Java语言元素映射为Types和Elements(两者有什么区别?),从而将Java语言的语义映射成为对象,我们可以在ng.model包下面可以看到这些类。 所以我们可以利用JSR 269提供的API来构建一个功能丰富的元编程(metaprogramming)环境。
JSR 269用Annotation Processor在编译期间而不是运行期间处理Anno
tation,Annotation Processor相当于编译器的一个插件,所以称为插入式注解处理.如果Annotation Processor处理Annotation时(执行process方法)产生了新的Java代码,编译器会再调用一次Annotation Processor,如果第二次处理还有新代码产生,就会接着调用Annotation Processor,直到没有新代码产生为止.每执行一次process()方法被称为一个"round",这样整个Annotation processing过程可以看作是一个round的序列。
JSR 269主要被设计成为针对Tools或者容器的API. 举个例子,我们想建立一套基于Annotation的单元测试框架(如TestNG),在测试类里面用Annotation来标识测试期间需要执行的测试方法。
七:用Console开发控制台程序
JDK1.6中提供了 java.io.Console 类专用来访问基于字符的控制台设备。你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳。但我们不总是能得到可用的Console,一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用。如果JVM是在交互式命令行(比如 Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。
八:对脚本语言的支持
如: ruby,groovy,javascript。
九:Common Annotations
Common annotations原本是Java EE 5.0(JSR 244)规范的一部分,现在SUN把它的一部分放到了Java SE 6.0中。
随着Annotation元数据功能(JSR 175)加入到Java SE 5.0里面,很多Java 技术(比如EJB,Web Services)都会用Annotation部分代替XML文件来配置运行参数(或者说是支持声明式编程,如EJB的声明式事务),如果这些技术为通用目的都单独定义了自己的Annotations,显然有点重复建设,所以,为其他相关的Java技术定义一套公共的Annotation是有价值的,可以避免重复建设的同时,也保证Java SE和Java EE 各种技术的一致性。
下面列举出Common Annotations 1.0里面的10个Annotations Common Annotations Annotation Retention Target Description Generated Source ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE 用于标注生成的源代码Resource Runtime TYPE,METHOD,FIELD用于标注所依赖的资源,容器据此注入外部资源依赖,有基于字段的注入和基于setter方法的注入两种方式 Resources Runtime TYPE同时标注多个外部依赖,java认证网,加入收藏容器会把所有这些外部依赖注入PostConstruct Runtime METHOD标注当容器注入所有依赖之后运行的方法,用来进行依赖注入后的初始化工作,只有一个方法可以标注为PostConstruct PreDestroy Runtime METHOD当对象实例将要被从容器当中删掉之前,要执行的回调方法要标注为PreDestroy RunAs Runtime TYPE用于标注用什么安全角色来执行被
标注类的方法,这个安全角色必须和Container的Security角色一致的。RolesAllowed Runtime TYPE,METHOD用于标注允许执行被标注类或方法的安全角色,这个安全角色必须和Container的Security角色一致的 PermitAll Runtime TYPE,METHOD允许所有角色执行被标注的类或方法DenyAll Runtime TYPE,METHOD不允许任何角色执行被标注的类或方法,表明该类或方法不能在Java EE容器里面运行DeclareRoles Runtime TYPE用来定义可以被应用程序检验的安全角色,通常用isUserInRole来检验安全角色。
注意:
1.RolesAllowed,PermitAll,DenyAll不能同时应用到一个类或方法上
2.标注在方法上的RolesAllowed,PermitAll,DenyAll会覆盖标注在类上的RolesAllowed,PermitAll,DenyAll
3.RunAs,RolesAllowed,PermitAll,DenyAll和DeclareRoles还没有加到Java SE 6.0上来
4. 处理以上Annotations的工作是由Java EE容器来做,Java SE 6.0只是包含了上面表格的前五种Annotations的定义类,并没有包含处理这些Annotations的引擎,这个工作可以由Pluggable Annotation Processing API(JSR 269)来做。
1. 面试官拿着你的简历,会挑其中的一个项目,然后让你说出这个框架的流程
Struts 1.2 实现原理如下:
1.web应用启动时加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中(Action的映射信息存放在ActionMapping对象中.)
2.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息.
3.如果ActionForm实例不存在,创建一个ActionForm对象,把客户提交的表单信息保存到ActionForm对象中.
4.根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的validate()方法.
5.如果ActionForm的validate()方法返回null 或者一个不包含ActionMessage的ActionErrors对象,表示表单验证成功.
6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户端请求转发给ActionFoward对象指向的jsp组件.
7.ActionForward对象指向jsp组件生成动态页面,返回客户端浏览器.
2. 画出框架的流程图,会问每一个部分都是干什么用的
3. 针对2的问题,我们做的都是web项目,在那个框架中,servlet对应的是哪一个部分
4. 由前两个问题牵引出web.xml文件配置中都有哪些属性,以及他的作用
5. 对spring了解吗
6. spring的依赖注入方式有哪几种(注意不是spring的注入方式是依赖注入)
手动注入,自动注入,手动分为 xml配置注入,注解注入
7. 有关事物的问题,做项目中做到哪些与事物有关的,事物是怎么控制的,怎么去写
数据库操作,ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持
久性(durability)的缩写。
8. 触发器,存储过程也说了一点
9. 项目开发中,如果遇到一个问题,你自己也不知道该用什么技术去解决,怎么去解决,该如何去查
10. 你有三年项目开发经验,觉得自己比别人有优势的地方在哪
11. 最后会问对他们公司有什么要了解的,给你个机会,让你去问问题
1,自我介绍,自己做过的项目,擅长的技术。
2,用过的框架,最擅长的那个?
3,所知道的MVC框架还有哪些?
4,经常去些什么样的网站,对自己将来有什么样的打算,规划。
javaeye,csdn
5,喜欢技术吗,(喜欢)。举个例子来说明你喜欢技术。
6,以前项目中有没有加班,频率、加班时间长度。对加班的看法。
7,以前的项目主中要做什么内容,SE级别,还是开发。
8,在项目组怎样做项目,没有详细设计能做吗?
9,Struts用的什么版本。
10,Struts2用过吗?和Struts1有什么区别。
action struts里面action是继承了一个抽象基类,单例的线程安全的。2的action可以实现一个aciton接口,可以是简单的pojo对象,给每个请求都产生一个action实例。
servlet 依赖,struts依赖于servlet api 当action被调用时 httpservletrequest,httpservletresponse被传递给execute方法,struts2不依赖容器,但是必要也可访问
struts1支持jstl el ,2支持ognl一个强大的表达式语言
struts1使用actionform作为对象捕获输入,2使用action属性作为输入属性
11,Spring的AOP了解吗,主要用在项目的那些方面。
权限 事务
12,以前的项目规模都是多大的。
1. 首先自我介绍
2. 问最熟悉的项目
3. 画出STRUTS框架响应jsp的流程图.
1.web应用启动时加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中(Action的映射信息存放在ActionMapping对象中.)
2.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息.
3.如果ActionForm实例不存在,创建一个ActionForm对象,把客户提交的表单信息保存到ActionForm对象中.
4.根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的validate()方法.
5.如果ActionForm的validate()方法返回null 或者一个不包含ActionMessage的ActionErrors对象,表示表单验证成功.
6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户端请求转发给ActionFoward对象指向的jsp组件.
7.ActionForward对象指向jsp组件生成动态页面,返回客户端浏览器.
4. 针对2的问题,我们做的都是web项目,在那个框架中,servlet对应的是哪一个部分
5. 由前两个问题牵引出web.xml文件配置中都有哪些
属性,以及他的作用
6. 对spring了解吗
7. spring的依赖注入方式有哪几种(注意不是spring的注入方式是依赖注入)
8. 有关事物的问题,做项目中做到哪些与事物有关的,事物是怎么控制的,怎么去写
9. Struts底层的相关知识
10. 项目开发中,如果遇到一个问题,你自己也不知道该用什么技术去解决,怎么去解决,该如何去查
11. 你有三年项目开发经验,觉得自己比别人有优势的地方在哪
12. 最后会问对他们公司有什么要了解的,给你个机会,让你去问问题
1. 首先自我介绍
2. 在你所用过的框架中你比较喜欢那个
3. 问你做过的这些项目中那个收获最大,收获到了什么
4. ibatis 和 Hibernate 的区别
5. servlet 的生命周期
6. spring 的两个主要特性(AOP 和IOC)
7. 说一下你所理解的J2EE是什么
8. 为什么说JBOSS 符合J2EE的要求,而TOMCAT 不符合J2EE的要求
9. Hibernate 的优点和缺点
优点
1:jdbc的操作比较繁琐,hibernate没有涉及到原生的sql语句屏蔽了底层的实现,提高了生产效率
2:sql语句是面向过程的,hibernate是开发更oo了直接对对象进行增删改查
3:hibernate 是的or映射跨越数据库平台,移植性比较好。
4;支持透明的持久化,单纯的pojo不需要实现任何的接口和继承任何的类,值需要修改配置文件即可
缺点
但是批量的操纵不合适,使用数据库特定的功能(如优化机制)
重点:对象关系的映射,缓存的使用
10. 你认为在项目中最重要的是什么
11. 要是分给你的任务,你感到完成有困难,你会怎么办
12. 最后你对支付宝有什么要问的 这次去杭州支付宝面试,因为我的面试官是个开发主管,框架方面的技术问的很少,大部分都是根据问你项目而延伸的一些Sql , UML等问题,简历的项目当中如果有快钱的项目要好好准备下,对快钱的项目非常感兴趣。主要问题有以下:
1. 首先面试官自己自我介绍,然后让你自我介绍。
2. 哪家公司的?哪年出生的?哪年毕业的?工作几年了?这些问题都是在看你的回答是不是跟简历不一样,简历有没有作假。回答一定不要考虑。
3. 对于协力员工的看法?
4. 你的人生规划职业规划是怎么样的?
5. 对于项目加班有什么看法?你加班的极限是多少?
6. 熟悉一个新框架需要多长时间?(支付宝自己有个自己的框架)
7. 说出你认为对你影响最深的项目,并说出原因.
8. Oracle中的分页Sql怎么写?
9. 简单地向一个不懂计算机的人说明一下java的多态。
10. 说一下你知道的java设计模式。
11. struts,spring中应用了哪写java设计模式?
单例 工厂 代理
12. 说下spring的代理模式,画下spring代理模式的类图。
13.
快钱的项目中所担当的模块,根据你的回答就此展开一些问题。
14. 宝钢物流的项目的入库那个模块在开发中大致都用了哪些类?哪些接口?并画下UML图。 以上是主要的问题,还有些问题都是根据你的回答延伸的。
1 简单介绍自己
2 根据你的介绍提问
3 mvc开发模式有哪些模式
4 你的人生规划
5 业余爱好
6 最近所做的项目中除了你做的模块,还有哪些
7 你都去过哪做项目 总结:根据面试官不同,他可能喜欢的人也不同,这个面试官喜欢做事有计划的
1、 什么是Web Service?
Webservice 以实现跨平台,可互操作性为目的的,基于xml,xsd等独立于平台,软件服务商的标准,创建可互操作性的分布式应用。