java前端开发面试题(精选10篇)
这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。
2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。
3)在java中wait和sleep方法的不同?
通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
4)用Java实现阻塞队列。
这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。
5)用Java写代码来解决生产者――消费者问题。
与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么解决生产者――消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。
6)用Java编程一个会导致死锁的程序,你将怎么解决?
这是我最喜欢的Java线程面试问题,因为即使死锁问题在写多线程并发程序时非常普遍,但是很多侯选者并不能写deadlock free code(无死锁代码?),他们很挣扎。只要告诉他们,你有N个资源和N个线程,并且你需要所有的资源来完成一个操作。为了简单这里的n可以替换为2,越大的数据会使问题看起来更复杂。通过避免Java中的死锁来得到关于死锁的更多信息。
7) 什么是原子操作,Java中的原子操作是什么?
非常简单的java线程面试问题,接下来的问题是你需要同步一个原子操作。
8) Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同?
自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。应该准备好回答关于volatile变量怎样在并发环境中确保可见性、顺序性和一致性。
9) 什么是竞争条件?你怎样发现和解决竞争?
这是一道出现在多线程面试的高级阶段的问题。大多数的面试官会问最近你遇到的竞争条件,以及你是怎么解决的。有些时间他们会写简单的代码,然后让你检测出代码的竞争条件。可以参考我之前发布的关于Java竞争条件的文章。在我看来这是最好的java线程面试问题之一,它可以确切的检测候选者解决竞争条件的经验,or writing code which is free of data race or any other race condition。关于这方面最好的书是《Concurrency practices in Java》。
10) 你将如何使用thread dump?你将如何分析Thread dump?
在UNIX中你可以使用kill -3,然后thread dump将会打印日志,在windows中你可以使用”CTRL+Break”。非常简单和专业的线程面试问题,但是如果他问你怎样分析它,就会很棘手。
11) 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
这是另一个非常经典的java多线程面试问题。这也是我刚开始写线程程序时候的困惑。现在这个问题通常在电话面试或者是在初中级Java面试的第一轮被问到。这个问题的回答应该是这样的,当你调用start()方法时你将创建新的线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码。阅读我之前写的《start与run方法的区别》这篇文章来获得更多信息。
12) Java中你怎样唤醒一个阻塞的线程?
这是个关于线程和阻塞的棘手的问题,它有很多解决方法。如果线程遇到了IO阻塞,我并且不认为有一种方法可以中止线程。如果线程因为调用wait()、sleep()、或者join()方法而导致的阻塞,你可以中断线程,并且通过抛出InterruptedException来唤醒它。我之前写的《How to deal with blocking methods in java》有很多关于处理线程阻塞的信息。
13)在Java中CycliBarriar和CountdownLatch有什么区别?
这个线程问题主要用来检测你是否熟悉JDK5中的并发包。这两个的区别是CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch不能重复使用。
14) 什么是不可变对象,它对写并发应用有什么帮助?
另一个多线程经典面试问题,并不直接跟线程有关,但间接帮助很多。这个java面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么String是不可变的。
15) 你在多线程环境中遇到的共同的问题是什么?你是怎么解决它的?
2.简述HTML经常使用的标签和作用。
Div/a/p/span/li/ul/ol/table/tr/td
3.你认为最常遇到的兼容Bug有哪些?有哪些问题是你认为解决起来最麻烦的?
IE6 PNG
IE6 Fixed
4.块级元素和行内元素都有哪些? 行内元素有哪些特点?
5.介绍所知道的CSS hack技巧(如:_,*,+,9,!important 之类)
6.CSS定位方式有哪些?position属性的值有哪些?他们之间的区别是什么?
在CSS中关于定位的内容是:position:relative | absolute | static | fixed
static 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级。 relative 不脱离文档流,参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级。
absolute 脱离文档流,通过 top,bottom,left,right 定位。选53D6其最近的父级定位元素,当父级 position 为 static 时,absolute元素将以body坐标原点进行定位,可以通过z-index进行层次分级。
fixed 固定定位,这里他所固定的对像是可视窗口而并非是body或是父级元素。可通过z-index进行层次分级。
7.函数的几种定义方法
function a(){},var a = function(){}
8.对象的定义方法
a = new Object(), a = {}
9.类的定义方法(prototype)(继承)
Var a = function(){}
a.prototype = {}
new a();
10.this 关键字的指向
obj.foo()== obj
foo()== window;
new obj.foo()== obj //方法调用模式,this指向obj //函数调用模式,this指向window //构造器调用模式, this指向新建立对象
foo.call(obj)== obj;//APPLY调用模式,this指向obj
11.DOM操作
在
hello,将hello替换成“你好”将Body的innerHTML重写和将的innerHTML重写有何区别
12.什么是闭包,及其作用
13.事件绑定的几种方法,事件冒泡
14.Ajax/json/json0070
15.异步ajax的优缺点
优点:
相对于同步ajax:不会造成UI卡死,用户体验好。
相对于刷新页面,省流量
缺点:
后退按钮无效;
多个请求同时触发时,由于回调时间不确定,会造成混乱,避免这种混乱需
要复杂的判断机制。
搜索引擎不友好
数据安全
16.常用JS框架,是否使用过jQuery,jQuery的优点。17.18.JS用了多久,介绍一下自己做过的JS项目,19.开发调试工具和方法(编辑器、浏览器
20.类、函数、对象(代码表达)
21.闭包(setTimeout)(产生两个首尾相连的计时器)(使用for循环产生10个计时器)||
22.Jquery Mobile
23.HTML5/CSS3
24.是否听说和理解webapp
1.应届
25.在行的语言,优缺点
26.介绍项目经验,合作开发、独立开发
27.编程的重要知识
28.开发过程中遇到困难,如何解决。
29.有没有个人/开源项目
30.前端开发(HTML/CSS/
一、不要正面否定对方,尝试认同对方观点合理性,再从侧面反驳。
二、展示推理过程,从双方共同认可的观点出发,层层推理得出你的结论,在过程中,不断跟面试官讨论确认。
三、引述出处,使用专业词汇,使得面试官对你的观点天然产生敬畏,不敢草率否定。例如:
“说说为什么JavaScript是一门基于对象的语言而不是面向对象的语言?” “JavaScript明明就是面向对象啊?”(惨死,还是冤死)
“说说为什么JavaScript是一门基于对象的语言而不是面向对象的语言?” “哦,JavaScript的语言规范ECMA262的序章里面提到过JavaScript是面向对象的语言,而ECMA262名词解释里也提到了JavaScript是基于对象的语言。在它这个定义里面,面向对象是指以对象为主要抽象工具,描述逻辑,基于对象是指基础库和运行时设施,以对象为基础来设计。所以JavaScript既是面向对象,又是基于对象。JavaScript是基于对象的语言而不是面向对象这个说法我好像也听过,但是记不太清了,因为觉得语言规范比较权威嘛,呵呵”(说的有凭有据,又留足面子,至少得回去掂量一下……)
其实“不靠谱的面试官”很少出现,这样的突发情况并不是总能处理好,我们要尽最大努力,剩下的就凭运气了……
关于简历
一个人合适不合适,在面试前就决定了大半。一个简历看上去合格的应聘者,面试阶段可能只是确认简历上内容的真实性罢了。
有些应聘者,尤其是应届生特别容易受到各种传奇故事的感染,追求出位。其实简历只是信息的载体,不管它有多好看,不管你制作的多认真,最重要的还是它的内容。
所以,简历上最重要的是什么呢?各个岗位有所不同,下面是我对技术岗位的简历上比较看重的内容:
工作履历,尤其是上一份工作,公司名是否听过,公司档次,如BAT、FLG,岗位
教育经历,是否是top2 是否是国外名校,是否是985、211学校,是否有ACM竞赛获奖经历
技术社区贡献,blog是否有深度内容,是否有稳定更新,github上有没有高质量开源项目
项目经历,项目的规模,复杂程度,其中体现的
个性化内容:技术视野,个人成长经历,个人研究内容,学习方法
写简历的时候,首先要明白,HR或者主管查看简历的时候,一般只会花费1分钟,于是有以下几点建议
这其中次要信息越少,重要信息就越突出
任何复杂的排版方式,都会加大阅读困难
变色强调非常有用,可以突出重点,但是到处变色强调是灾难
技能列表,精通和熟悉,这些内容价值不高,偶尔还会惹麻烦
应届生常犯的错误是使用网上的各种简历模板,然后拼凑内容。没有项目经历硬造项目经历,找一些亲友开的公司硬挂靠顾问甚至总裁助理职位,这些东西会阻碍面试官看到真正有价值的内容。
正确的写简历方式是用一张白纸,先写好必要的个人信息和联系方式,然后列出所有你觉得自己做过的有价值的事和拿到的荣誉,按照从重要到不重要依次排列,再做简单的分类组织。
然后,问题来了,对很多人来说,这个列表是空的?怎么办?
我的建议是,既然是空的,那就不写,请把经历放在个性化内容上,从技术视野,个人成长经历,个人研究内容,学习方法中,选择一项,深入谈谈你做过的努力,这些也有可能打动面试官,比硬性拼凑的内容强过百倍。
★ 前端面试题
★ 微软电话面试题
★ 前端年终总结
★ 经典面试题
★ 阿里帕 颁奖词
★ 前端开发简历范文
★ 前端实习报告
★ 前端个人工作总结范文
★ 前端转正申请书范文
1、负责前端核心代码的编写;
2、负责前端架构设计;
3、前端技术引入及分享;
4、前端重难点突破。
任职要求:
1、本科以上学历,有3年以上的JavaScript实际开发经验,具备良好的面向对象编程基础;
2、精通JavaScript、HTML、CSS等技术;
3、熟悉http,熟悉各种浏览器终端的兼容性
4、熟悉并使用过angular、react、vue等前沿框架,有实际项目经验者优先;
5、具备一种后端开发语言更佳,较强的沟通交流和团队合作能力;
1. 完成前端页面的设计、开发、测试等工作;
2. 完成前后台数据的对接及页面渲染;
3. 根据需求撰写相关的技术文档;
4. 与客户进行有效沟通,并具有一定的现场解决问题的能力。
任职要求:
1. 本科及以上学历,计算机相关专业优先;
2. 三年Java技术开发经验,Java编程语言功底扎实,能熟练使用JavaEE开发常用框架(Hibernate,Struts,Spring,SpringMVC,MyBatis,JQuery);
3. 熟悉关系型数据库ORACLE、MySql等,熟练使用SQL语言;熟悉WEB界面编程技术,能够熟练使用JavaScripts、CSS、Ajax、XML脚本、HTML5+CSS3等技术编写交互页面程序;
4. 熟悉至少一种web容器,如Tomcat;
5. 责任心强,对技术有热情,好钻研,好分享;
6. 熟悉Linux系统者、接触过分布式项目者优先;
来源:58.com 2013-09-23 17:15
高级java面试题:
第一,Anonymous Inner Class(匿名内部类)是否可以继承其它类,是否可以实现接口? 匿名的内部类是没有名字的内部类。不能继承其它类,但可作为一个接口,由另一个内部类实现。
第二,谈谈final, finally, finalize的区别。
final 如果一个类被声明为final,意味着它不能再派生出新的子类,因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally 用来清除异常。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize()在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。它是在 Object 类中定义的,因此所有的类都继承了它。
第三,Static Nested Class 和 Inner Class的不同。
Nested Class(一般是C++的说法),Inner Class(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
注:静态内部类(Inner Class)意味着:创建一个static内部类的对象不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类 允许一个 null 键和多个 null 值。
Hashtable 类 不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。
示例:
assert(a > 0);// throws an AssertionError if a <= 0
断言可以有两种形式:
assert Expression1;
assert Expression1 : Expression2;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记: javac-source 1.4 Test.java
要在运行时启用断言,可使用-enableassertions 或者-ea 标记。
要在运行时选择禁用断言,可使用-da 或者-disableassertions 标记。
要系统类中启用断言,可使用-esa 或者-dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其
参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
第八,GC是什么? 为什么要有GC?
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String(“xyz”);创建了几个String Object?
两个对象,一个是String类型的“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。个人猜测,可能是以下结构:
run(){
myThread.start();
······
}
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只有值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if(instance==null)
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实
现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert。
第八,GC是什么? 为什么要有GC?
第九,String s = new String(“xyz”);创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
第十二,sleep()和 wait()有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?第十七,给我一个你最常见到的runtime exception。
第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract class和interface有什么区别?
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
以下是答案
第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实
现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class(一般是C++的说法),Inner Class(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: ///articles/services/view.asp?id=704&page=1注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a > 0);// throws an AssertionError if a <= 0
断言可以有两种形式:
assert Expression1;
assert Expression1 : Expression2;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac-source 1.4 Test.java
要在运行时启用断言,可使用-enableassertions 或者-ea 标记。
要在运行时选择禁用断言,可使用-da 或者-disableassertions 标记。
要系统类中启用断言,可使用-esa 或者-dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。第八,GC是什么? 为什么要有GC?(基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String(“xyz”);创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
short s1 = 1;s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1)。short s1 = 1;s1 += 1正确。
第十二,sleep()和 wait()有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto—java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException,CannotRedoException, CannotUndoException, ClassCastException, CMMException,ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException,IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException,RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException,UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类
是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。<< 3
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if(instance==null)
instance=new Singleton();
return instance;}
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。
QUESTION NO: 1
1、public class Test {
public static void changeStr(String str){
str=“welcome”;
}
public static void main(String[] args) {
String str=“1234”;
changeStr(str);
System.out.println(str);
}
}
Please write the output result :
QUESTION NO:2
1. public class Test {
2. static boolean foo(char c) {
3. System.out.print(c);
4. return true;
5. }
6. public static void main( String[] argv ) {
7. int i =0;
8. for ( foo(“A”); foo(“B”)&&(i<2); foo(“C”)){
9. i++ ;
10. foo(“D”);
12. }
13. }
14. }
What is the result?
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }
QUESTION NO: 4
1. public class Outer{
2. public void someOuterMethod {
3. // Line 3
4. }
5. public class Inner{}
6. public static void main( String[]argv ) {
7. Outer o = new Outer();
8. // Line 8
9. }
10. }
Which instantiates an instance of Inner?
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()
QUESTION NO: 5
Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?
A. The encodeURL method of the HttpServletRequest interface.
B. The encodeURL method of the HttpServletResponse interface.
C. The rewriteURL method of the HttpServletRequest interface.
D. The rewriteURL method of the HttpServletResponse interface.
QUESTION NO: 6
Which two are equivalent? (Choose two)
A. <%= YoshiBean.size%>
B. <%= YoshiBean.getSize()%>
C. <%= YoshiBean.getProperty(“size”)%>
D.
E.
F.
G.
QUESTION NO: 7
Which of the following statements regarding the lifecycle of a session bean are correct?
1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.
2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.
3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.
4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.
5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.
第二部分:概念题
1. 描述Struts体系结构?对应各个部分的开发工作主要包括哪些?
2 JSP有哪些内置对象和动作?它们的作用分别是什么?
3、SQL问答题
SELECT * FROM TABLE
和
SELECT * FROM TABLE
WHERE NAME LIKE “%%” AND ADDR LIKE “%%”
AND (1_ADDR LIKE “%%” OR 2_ADDR LIKE “%%”
OR 3_ADDR LIKE “%%” OR 4_ADDR LIKE “%%” )
的检索结果为何不同?
4、SQL问答题
表结构:
1、表名:g_cardapply
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_applydate bigint 8;//申请日期
g_state varchar 2;//申请状态
2、表名:g_cardapplydetail
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_name varchar 30;//申请人姓名
g_idcard varchar 18;//申请人身份证号
g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号,
华为招聘Java面试题
,
题目:
1、查询身份证号码为440401430103082的申请日期
2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
4、删除g_cardapplydetail表中所有姓李的记录
JAVA基础篇
1、在java类加载器中,系统类加载器和用户自定义加载器那个先加载?(遇到这个问题时感觉很意外,没有想到会问这样的问题)
先加载系统类加载器
Java类加载器加载类顺序依次为:
JVM类加载器:这个模式会加载JAVA_HOME/lib下的jar包
扩展类加载器:会加载JAVA_HOME/lib/ext下的jar包
系统类加载器:这个会去加载指定了classpath参数指定的jar文件
用户自定义类加载器:sun提供的ClassLoader是可以被继承的,允许用户自己实现类加载器
2、堆和栈分别存放什么?
栈:基本数据类型和对象的引用
堆:对象和数组
3、String、StringBuffer、StringBuilder的区别
(1)String是不可变对象,也就是说每次修改String都是新建了一个对象并赋值(2)StringBuffer是字符缓冲区,修改它不会新建对象,可以使用append()方法和delete()方法修改StringBuffer的值
(3)StringBuilder可以替代StringBuffer,它是一个单线程使用的类,和StringBuffer比速度快、效率高,但是是非安全的
(4)三者都是被final修饰的(这一点面试官的问我的时候一直在说,你确定吗?搞得我有点虚)
4、Java的异常和错误有什么区别?
(1)Error Error是JVM的错误,这种错误会严重影响程序的运行,设计者不会设计程序代码去捕捉这种错误,因为即使捕捉到也无法给予适当的处理,比如内存溢出。(2)Exception Exception包含了一般性的异常,这些异常同在在捕捉到之后便可做妥善的处理,以确保程序继续运行。Exception有很多种分类,从Exception产生的时机上我们可以把Exception分为
①运行时异常
运行时异常是指程序运行过程中可能出现的非正常状态 ②非运行时异常
非运行时异常是指方法声明时throws的异常
5、&和&&的区别
&是位运算符,表示按位与运算。&&是逻辑运算符,表示逻辑与。在条件判断的时候&必须逐一检查各个条件,&&具有短路功能,只要一个条件为false则不会进行后续的判断。
6、abstract class和interface的区别
(1)abstract class是抽象类,声明方法的存在而不去实现它的类叫做抽象类,它用于创建一个体现某些基本行为的类。抽象类中不能有构造方法、不能有静态方法,抽象类不能被实例化。抽象类中可以有变量、可以有普通方法、可以有抽象方法,在继承抽象方法后,必须实现它的所有抽象方法。
(2)interface是接口,接口中的变量必须是静态常量(static final),接口中的方法必须都是抽象方法(abstract),不过由于接口中所有变量、方法修饰符都一致,因可以不写。接口的实现必须实现接口中所有的方法。
7、final、finally、finalize的区别
(1)final是用来描述变量、方法、类的关键字,表示变量值不可变、方法不可被重写、类不可被继承
(2)finally是异常处理的关键字,表示finally块里面的代码一定会被运行到(3)finalize是Object类中的protected方法,垃圾回收器执行的时候会调用被回收的类的此方法。
8、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以实现实体类?
(1)接口可以继承接口
(2)抽象类里可以有普通方法,因此抽象类可以实现接口,只需要实现接口内所有方法就可以了
(3)抽象类里可以有普通方法,变量也不需要是常量,因此抽象类可以实现实体类
9、一个”.java”源文件中是否可以包含多个类(非内部类)?有什么限制?
可以。必须只有一个类名与文件名相同且该类以public修饰
10、java是怎么通过包名.类名来获得该类的实例的?
通过Class.forName()方法
11、介绍一下集合?
①Collection:是最基本的集合接口,一个collection代表一组Object,即collection的元素。
②List:是collection的扩展,作用是收集对象,并以索引方式保留收集对象的顺序。其元素有放入顺序,元素可重复。
1)ArrayList:利用类似于数组的形式来存储数据,它的随机访问速度极快。
2)LinkedList:内部实现是链表,它适合于在链表中间需要频繁的插入和删除操作。
3)Vector:与ArrayList相似,但是两者不同,Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
4)ArrayList与Vector的区别:
ArrayList是非线程安全的,效率高
Vector是基于线程安全的,效率低。
③Set:也是collection的扩展,在Set中的元素对象要求不能重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)。常用实现类有HashSet和TreeSet。
1)HashSet:其核心是HashMap,HashSet中存放的值为HashMap中的key,这也就是HashSet不允许重复的原因。
2)TreeSet:底层由平衡二叉树实现,它会将投入其中的元素自动排序,这就要求投入其中的元素是可排序的,也就是说,存放的必须是同一种数据类型。其实现自动排序的实质是compareable
public int compareTo(Object obj){ if(equals(obj)){
return 0;}else{ Return 1;} }
这个方法称为比较器,可以比较两个对象,如果对象都一致相等,则返回0 ④Map:没有继承collection接口,提供key到value的映射,也就是说,它是一种把键对象和值对象进行关联的容器。
1)HashMap:key不允许重复,如果后面的key重复,则会覆盖前面的值,key允许为null,但是只能有一个。
2)TreeMap:key如果是一个对象的话,这个对象所在的类一定要实现compareable接口,并且重写compareTo方法。3)HashMap与HashTable比较:
HashMap:非线程安全,高效率,支持null HashTable:线程安全,低效率,不支持null
12、list、set和map的遍历方法比较:
List:可以用for循环、for each循环和Iterator迭代。
Set:可以用for each循环和Iterator迭代。
Map:HashMap只能用Iterator迭代。
13、写一个单例设计模式: Public class Apple{ Private static Apple apple;Private Apple(){ } Public static Apple getApple(){ If(null == apple){ apple = new Apple();return apple;}else{ return apple;} } }
14、说说static关键字:
Static表示“全局”或“静态”的意思,可以用来修饰成员变量和成员方法,也可以形成静态代码块,还可以用来修饰类,但只能修饰内部类。
①static变量:被static修饰的变量叫静态变量或者类变量;没有被static修饰的变量叫实例变量。二者的区别是:
静态变量:在内存中只有一个拷贝(节省内存),jvm只会为静态分配一次内存,而且在加载类的过程中就完成静态变量的内存分配。可用类名直接访问(方便),也可以用对象来访问(不推荐)。静态变量一般用于对象之间需要共享值时。
实例变量:每创建一个实例,就会为实例分配一次内存,实例变量在内存中可以有多个拷贝,互不影响(灵活)。
②静态方法:它可以直接通过“类名.静态方法”来访问,任何的实例亦可以调用。静态方法中不能用this和super关键字。不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态变量和成员方法。
③static代码块:static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置也可以随便放,它不在任何的方法体内,jvm在加载类时会执行这些静态代码块,如果有多个,则会按照他们在类中出现的先后顺序一次执行它们,而且每个代码块只会执行一次。
15、Servlet的生命周期:
①加载和实例化:在Servlet容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。
②初始化:在Servlet实例化后,容器将调用Servlet的init()方法初始化这个对象。
③请求处理:Servlet容器将调用Servlet的service()方法对请求进行处理。
④服务终止:当容器检测到一个Servlet的实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法
16、jsp九大内置对象范围比较:
排序为:Application > Session > Request > Page = Response = out = PageContext = config = exception。
Application:服务器启动到停止这段时间。
Session:Http会话开始到结束这段时间(浏览器打开到关闭)
Request:Http请求开始到结束这段时间,即一个jsp页面发出请求到另一个jsp页面之间。
Page:页面执行,当前页面从打开到关闭这段时间,它只能在同一个页面中有效
Response:页面执行,包含了客户请求的有关信息,但jsp中很少用到它。
Out:页面执行,向客户端输入内容时常用的对象
PageContext:页面执行,取得任何范围的参数,通过它可以获得out、Requset、Response、Session、application等对象。
Config:页面执行,取得服务器的配置信息。
Exception:仅在错误处理页面
17、jsp和servlet的区别与联系:
①JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用
②JSP是web开发技术,Servlet是服务器端运用的小程序 ③JSP更多的是进行页面显示,Servlet更多的是处理业务,即JSP是页面,Servlet是实现JSP方法
④开发界面是JSP时,可以直接编写:
out.println(“
18、final关键字的作用
(1)final修饰的基本数据类型的值不可被改变,final修饰的引用类型的引用不可变而引用的值还是可以变的
(2)final修饰的方法不可被重写(3)final修饰的类不可被继承
(4)final修饰的基本数据类型的形参在方法体内不可以被重新赋值,final修饰的引用类型的形参不可以被赋予一个新的引用
数据库方面
1、问你怎么同时更新一个表中的两个字段?(假设表名为A,要更新的字段分别为name、age)
update A set name = ‘ 姚明’ , age = 35 where id = 10;
2、给student添加一个来自classes的外键:(这个很容易被我们自己忽视)
alter table student add constraint fk_stu_cls foreign key(cid)references classes(cid);
3、数据库三范式:属性唯
一、记录唯
一、表唯一
4、查询结果按tid排序(降序):select * from test order by tid desc;(默认是按升序的)
5、oracle的左外连接
Select * from dept d left outer join emp e on d.deptno = e.deptno
order by d.deptno,e.ename;
SSH框架
1、hibernate和JDBC相比有什么优势?
1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4.hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2、为什么要用struts?
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
3、为什么要用spring?
AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。
Spring即使一个AOP框架,也是一IOC容器。Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
4、什么是MVC模式?有什么作用?
MVC全名Model View Controller,即模型-视图-控制器,是一种非常经典的软件架构模 式。从设计角度看,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三个角色中,即:
(1)模型:持有所有的数据、状态和程序逻辑,独立于视图和控制器。
(2)视图:用来呈现模型。视图通常直接从模型中取得它要显示的状态和数据。对于相同 的信息可以有多个不同的显示形式或视图。(3)控制器:位于视图和模型中间,负责接收用户的输入,将输入进行解析并反馈给模型,通常有一个模型具有一个控制器。
5、hibernate的三种状态:
瞬时状态
持久状态
游离状态
6、C/S和B/S的区别:
优点:
C/S:占用网速小,对于一些网速比较慢的电脑有明显的优势。
B/S:不需要安装客户端,只需要浏览器就能打开。缺点:
C/S:需要安装客户端,有时候需要更新。
B/S:对网速的需求大,对于一些网速慢的电脑不适合。
7、struts2 的核心是什么?它与struts1有什么关系?
struts2的核心是WebWork,与struts1没关系
8、列举五个struts2中的拦截器: ①alias:实现在不同请求中相似参数别名的转换。②autowiring:自动装配的拦截器,主要用于当struts2和spring整合时,struts2可以使用自动装配的方式来访问spring容器中的bean。
③createSession:该拦截器负责创建一个httpSession对象,主要用于那些需要有httpSession对象才能正常工作的拦截器。
④debugging:当使用struts2的开发模式时,这个拦截器会提供更多的调试信息。
⑤exception:这个拦截器负责处理异常,它将异常映射为结果。
⑥fileUpload:这个拦截器主要用于文件上传,它负责解析表单文件域中的内容。
⑦i18n:支持国际化的拦截器,它负责把所选的语言、区域放入用户session中。
⑧params:这是一个最基本的拦截器,它负责解析HTTP请求中的参数,并将参数值设置成对应的Action属性值。⑨token:防止重复提交,它检查传到Action中的token,从而防止多次提交。⑩validation:通过执行XXXAction-validation.xml中定义的校验器,从而完成数据校验。
9、Spring注入方法:
①设值注入:通过setter访问容器实现
②构造注入:通过构造函数实现
③P命名空间注入
10、spring实现注解的配置:
1、GregorianCalendar类是什么东西?
GregorianCalendar提供了西方传统日历的支持。
2、ResourceBundle类是什么?
ResourceBundle用来存储指定语言环境的资源,应用程序可以根据运行时的语言环境来加载这些资源,从而提供不同语言的展示。
3、为什么Java里没有全局变量?
全局变量是全局可见的,Java不支持全局可见的.变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。
4、如何将String类型转化成Number类型?
Integer类的valueOf方法可以将String转成Number。
5、SimpleTimeZone类是什么?
SimpleTimeZone提供公历日期支持。
6、while循环和do循环有什么不同?
while结构在循环的开始判断下一个迭代是否应该继续。do/while结构在循环的结尾来判断是否将继续下一轮迭代。do结构至少会执行一次循环体。
7、Locale类是什么?
Locale类用来根据语言环境来动态调整程序的输出。
8、面向对象编程的原则是什么?
主要有三点,多态,继承和封装。
9、介绍下继承的原则
继承使得一个对象可以获取另一个对象的属性。使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。
10、什么是隐式的类型转化?
隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。并不是所有的类型都支持隐式的类型转化。
面试自我介绍范文
各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸。希望通过这次面试能够把自己展示给大家,希望大家记住我。我叫---,今年--岁。汉族,法学本科。我平时喜欢看书和上网浏览信息。我的性格比较开朗,随和。能关系周围的任何事,和亲人朋友能够和睦相处,并且对生活充满了信心。我以前在检察院实习过,所以有一定的实践经验。在外地求学的四年中,我养成了坚强的性格,这种性格使我克服了学习和生活中的一些困难,积极进去。成为一名法律工作者是我多年以来的强烈愿望。
如果我有机会被录用的话,我想,我一定能够在工作中得到锻炼并实现自身的价值。同时,我也认识到,人和工作的关系是建立在自我认知的基础上的,我认为我有能力也有信心做好这份工作。
公务员是一个神圣而高尚的职业,它追求的是公共利益的最大化,它存在的根本目的是为人民服务,为国家服务。雷锋说过:人的生命是有限的,而为人民服务是无限的,我要把有限的生命投入到无限的为人民服务当中去。这也是我对公务员认知的最好诠释。所以,这份工作能够实现我的社会理想和人生价值,希望大家能够认可我,给我这个机会!
面试前的准备
首先,你得对自己做出一个正确的定位。选择一个适合自己的行业,而不是适合自己专业的行业。多和他人交流,听取他们的.意见,最后结合自己的性格特征,兴趣取向等方面,搞清楚自己能做什么?要做什么?想清楚了就去准备,去做。永远不要忘记“机会总是留给那些准备好的人的”。
其次,通过各种渠道查找有关用人单位的信息,包括公司的主要产品、经营项目、管理方式,以及他们期望职工在这个特定的岗位上应该具有的素质。这对你在面试时应对面试官的提问会很有帮助的。必要时还可以提前去一次面试地点,以熟悉环境,你甚至要搞清楚厕所的方位。
第三,设计良好的个人形象。我给的建议是着装最好与用人单位尽量保持一致或相似,以给对方一种亲切感,让面试官觉得你是他们的一份子,你想成为他们的一份子。如果这方面有困难的话,也可以按以下建议着装,最终目的都是要展示自己的精神面貌,给用人单位留下一个良好的印象。
一)男士可以穿西装,以毛料的深蓝色西装为宜,全身颜色最好不要超过三种,可以配一双黑色皮鞋、一双深色袜子和一条领带。西装要平整、清洁、有裤线;西装口袋不放任何东西;必需拆除西装商标。面试前应理发、修指甲、刮胡子、去鼻毛,务必处理好这些细节。另外面试当天记得洗两次脸,稍稍用些护发、护肤品,以淡雅的香气为佳;西装上也可以适当喷些香水,最好是前一天晚上就喷好,保证不要太刺鼻,否则会让面试官感到不舒服。无论是护发、护肤品,还是香水务必保持气味一致。
【java前端开发面试题】推荐阅读:
前端开发实习工作计划10-26
前端开发述职报告范文10-28
web前端面试题10-30
php开发工程师面试题09-20
java开发工程师10-12
java开发程序员01-08
java开发工程师笔试07-01
前端年终总结02-15
web前端简历06-23
前端的设计流程12-05