JAVA高级面试题集及答案
Java面试题大全(答案版)

Java面试题大全(答案版)1、一个".java"源文件中是否可以包括多个类(不是内部类)有什么限制可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致2、&和&&的区别。
&和&&都可以用作逻辑与;&&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式;&还可以用作位运算符,当&操作符两边的表达式不是boolean 类型时,&表示按位与操作。
3、Java有没有gotojava中的保留字,现在没有在java中使用。
4、在JAVA中,如何跳出当前的多重嵌套循环break+变量控制与 return5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上不能作用在long上,也不能作用在String上6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。
s1+=1不会报,因为JVM 会对它特殊处理(自动强转)7、char型变量中能不能存贮一个中文汉字为什么可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的8、编程题: 用最有效率的方法算出2乘以8等於几2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的9、请设计一个一百亿的计算器思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。
10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变引用变量不能变11、"=="和equals方法究竟有什么区别==和equals方法都可以用来比较两个对象是否是同一个对象。
高级Java工程师面试题及答案

高级Java工程师面试题选择题各2分共44分1.下列说法正确的是A. Java语言不区分大小写B. Java程序以类为基本单位C. JVM为Java虚拟机JVM的英文缩写D. 运行Java程序需要先安装JDK答案:B,C,D2.下列说法中错误的是A. Java语言是编译执行的B. Java中使用了多进程技术C. Java的单行注视以//开头D. Java语言具有很高的安全性答案:A,B3.下面不属于Java语言特点的一项是A. 安全性B. 分布式C. 移植性D. 编译执行答案:D4.下列语句中,正确的项是A . int $ e,a,b=10;B. char c,d=’a’;C. float e=0.0d;D. double c=0.0f;答案ABD5.一个int 类型的常量和一个byte类型常量做减法,结果的类型是A. intB. byteC. charD. float答案 A6.下列程序段的输出结果是public class Expressions{void printExpr(){int x=3,y=4,z=5;System.out.println(x+y+z);}}A. xyzB. x+y+zC. 12D. 9答案 C7.下列关于for循环和while循环的说法中哪些是不正确的?A. for循环能实现的操作,while循环也都能实现B. for循环判断条件一般是非程序结果C. while循环判断条件一般是程序结果D. 两种循环结构中都必须有循环体,循环体不能为空答案ABC8.以下程序段执行后的K值为int x=10; y=34;k=(x<y)?y:x;A. 10B. 34C. 10D. 44答案 B9.下列不属于Java语言流程控制结构是A.分支语句B.条转语句C.循环语句D.赋值语句E.答案D10.设定义语句:int a[ ]={43,44,45};则下面对此语句的叙述正确的是A.定义一个名为a的一维数组B.a数组有3个元素C.a数组的元素的下标为1~3D.数组中的每一个元素都是整型E.答案ABD11.运行以下代码public class Person{int array[]=new int[10];public static void main(String args[]){System.out.println(array [1]);}}正确的是A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空答案 A12.执行完下面语句int[ ]x = new int[20]; 后,说法正确的是A.x[19]为0B.x[19]未定义C.x[20]为0D.x[0]为空答案A13.设tmp是一个数组类成员,以下声明并初始化一个4个元素的数组选项A.int tmp[]={1,2,3,4};B.int tmp[]=new int[5];C.int tmp[]=new int(5);D.int tmp[];答案 A14.设定义:String s=”cake”,下面不合法的有A.s=s. toUpperCase();B.char c=s[1];C.int len=s.length;D.s=s.trim();答案BC15.设String s1=”Hello”;String s2=”World”;以下方法用来得到字符串“Hello World”有A.s2+s1;B.s1.concat(s2);C.s1.append(s2);D.s1.concate(s2);答案B16.下面哪一个是Java最基本的元素A. 接口B. 方法C. 包D. 对象答案:D17.如果Cake.java、Ball.java这两个类总共包含有8个方法,则编译后会产生多少个字节码文件A. 12B. 10C. 2D. 1答案:C18.下面关于抽象类的理解,错误的是A. 构造方法可以声明为抽象类型B. 抽象方法必须被子类的方法覆盖C. 不允许实现抽象方法D. 方法声明中,static 和abstract不能同时存在答案:A19.编译Java程序时编译器提示找不到要编译的代码,这种错误通常可能是A. 文件名拼写错误B. 没有导入相应的包C. 文件名不是.javaD. 源文件不在Java搜索路径中答案:A,C,D20.捕获异常应该使用下列哪个子句A. throwB. catchC. finallyD. throws答案:B21.下列哪一项不属于finally语句的工作A. 关闭数据库B. 释放资源C. 关闭文件D.分配资源答案:D22.下面哪些需要异常处理机制A. 编译出错B. 方法、类中抛出的异常C. 使系统从故障中恢复D. 程序因不可避免的原因产生错误答案:B,C,D简述题每题3分共18分(1)用final声明属性、方法和类时,被声明的属性、方法和类表现出哪些特性?下面的实例正确吗?如果不正确,请说明原因?实例:final Test t = new Test();t.setName(“Jack”);答:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
java 高级程序员面试试题汇总

填空题下列程序中构造了一个SET并且调用其方法add(),输出结果是public class A{public int hashCode(){return 1;}public Boolean equals(Object b){return true}public static void main(String args[]){ Set set=new HashSet();set.add(new A());set.add(new A());set.add(new A());System.out.println(set.size());}}答案::1下列程序的运行结果是class A{class Dog{private String name;private int age;public int step;Dog(String s,int a){name=s;age=a;step=0;}public void run(Dog fast){fast.step++;}}public static void main (String args[]){A a=new A();Dog d=a.new Dog("Tom",3);d.step=25;d.run(d);System.out.println(d.step);}}答案::26运行下列程序第行出错。
1.class Outer{2.private int size=5;3.public Object makeInner(final int finalLocalV ar){4.int LocalV ar=6;5.class Inner{6.public String toString(){7.return ("#<Inner size="+size+/*" localV ar="+localV ar+" finalLocalV ar ="+finalLocalV ar + ">"); } }}8.return new Inner(); }9.}10.public class OuterTest{11.public static void main(String[] args){12.Outer outer=new Outer ();13.Object obj=outer.makeInner(56);14.System.out.println("The object is "+obj.toString()); } }答案::7下列代码不能编译的原因是Class A{Private int x;Public static void main(String args[]){new B();}class B{B(){System.out.println(x);}}}答案:因为在A的main方法中,还没有A的实例就要试图生成内部类的实例请写出下面程序的运行结果。
java高级工程师面试题及答案完整版

j a v a高级工程师面试题及答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]一:选择题1. 关于以下程序代码的说明正确的是( D )1.class HasStatic{2. private static int x=100;3. public static void main(String args[ ]){4. HasStatic hs1=new HasStatic( );5. hs1.x++;6. HasStatic hs2=new HasStatic( );7. hs2.x++;8. hs1=new HasStatic( );9. hs1.x++;10. HasStatic.x- -;11. (“x=”+x);12. }13. }A、 5行不能通过编译,因为引用了私有静态变量B、 10行不能通过编译,因为x是私有静态变量C、程序通过编译,输出结果为:x=103D、程序通过编译,输出结果为:x=1022. 下列关于for循环和while循环的说法中哪个是正确的( B )A.while循环能实现的操作,for循环也都能实现B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换D.两种循环结构中都必须有循环体,循环体不能为空3. 以下选项中循环结构合法的是( C )A、while (int i<7){ i++;(“i is “+i);}B、 int j=3;while(j){(“ j is “+j);}C、int j=0;for(int k=0; j + k !=10; j++,k++){(“ j is “+ j + “k is”+ k);}D、 int j=0;do{( “j is “+j++);if (j = = 3) {continue loop;}}while (j<10);4. 给出下面代码段, 哪行将引起一个编译时错误( D )1) public class Test {2) int n = 0;3) int m = 0;4) public Test(int a) { m=a; }5) public static void main(String arg[]) {6) Test t1,t2;7) int j,k;8) j=3; k=5;9) t1=new Test();10) t2=new Test(k);11) }12) }A. 行1B. 行4C. 行6D. 行95. 下面的方法,当输入为2的时候返回值是多少(D )public int getValue(int i) {int result = 0;switch (i) {case 1:result = result + i;case 2:result = result + i * 2;case 3:result = result + i * 3;}return result;}A 0B 2C 4D 10二:简述题1、描述一下 JVM 加载 class 文件的原理机制JVM 中类的装载是由ClassLoader 和它的子类来实现的,Java ClassLoader 是一个重要的Java 运行时系统组件。
java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
java高级面试题及答案

java高级面试题及答案一、基础理论知识1. 请解释Java中的四种访问修饰符及其作用范围。
答:Java中的四种访问修饰符分别是public、protected、default(无修饰符)和private。
public修饰的类或成员可以被任何其他类访问;protected修饰的成员可以被同一个包内的类以及子类访问;default(无修饰符)的成员只能被同一个包内的类访问;private修饰的成员只能在声明它的类内部访问。
2. 什么是Java的序列化和反序列化?请举例说明。
答:Java序列化是将对象的状态信息转换为字节流的过程,以便于存储或传输。
反序列化则是将字节流恢复为原来的对象。
例如,通过ObjectOutputStream和ObjectInputStream类可以实现对象的序列化和反序列化。
3. 解释Java中的多态性及其优势。
答:多态性是指允许使用子类对象来替代父类对象的能力。
在Java中,这是通过继承和接口实现的。
多态性的优势包括代码的可扩展性和可维护性,以及能够编写更通用的代码。
二、Java集合框架1. 请比较ArrayList和LinkedList的性能差异。
答:ArrayList是基于动态数组的数据结构,适合随机访问;LinkedList是基于双向链表的数据结构,适合频繁的插入和删除操作。
在随机访问大量元素时,ArrayList的性能优于LinkedList;而在插入和删除操作频繁时,LinkedList的性能更优。
2. 什么是HashMap的工作原理,以及如何解决它的线程安全问题?答:HashMap基于哈希表实现,通过键的哈希值来计算存储位置。
当两个不同的键具有相同的哈希值时,会发生哈希冲突,HashMap通过链表或红黑树来解决这个问题。
对于线程安全问题,可以使用ConcurrentHashMap,它通过锁分离技术来提供线程安全的映射。
三、异常处理1. 请解释Java中的异常处理机制。
java中高级面试题整理及参考答案

java中⾼级⾯试题整理及参考答案⾯试问题:⼀、Java基础⽅⾯:1、Java⾯相对象的思想的理解(主要是多态):2、集合:ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap,HashTable,HashSet的底层源码实现原理3、Java虚拟机(1)组成以及各部分作⽤:(2)类加载器——ClassLoader:(3)类加载器的⽗亲委托机制深度详解:(4)JVM调优:(5)垃圾回收:4、异常5、String,StringBuffer,StringBuilder区别6、值传递与引⽤传递:7、Java中的equals和hashCode⽅法详解8、TCP的三次握⼿和四次挥⼿9、多线程(1)实现线程同步:(2)⽣产者消费者问题:(3)线程安全(4)线程死锁(5)Synchronize实现原理(7)happen-before规则:(8)线程池(9)DCL失效原因以及解决办法:(10)线程实现⽅式:Thread,Runable,Callable的区别10、IO11、NIO12、⽹络编程13、Java内存模型⼆、数据库(MySql)1、⾯试题:2、sql优化:3、搜索引擎三、设计模式单例模式,⼯⼚模式,建造者模式,观察者模式,适配器模式,代理模式等等四、数据结构与算法:1、链表,栈,队列,⼆叉树:2、⼋⼤排序算法:3、查找算法五、⾼并发与海量数据1、⼤型⽹站应⽤之海量数据解决⽅案2、⼤型⽹站应⽤之⾼并发情况下的解决⽅案3、在⼀个千万级的数据库查寻中,如何提⾼查询效率?六,Struts,Spring,Hibernate,Mybatis,Springmvc 七、前端:javascript,Jquery⼋、Jsp+Servlet九、linux操作命令(重点服务器⽅⾯操作)⼗、tomcat调优⼗⼀、Redis/MongoDB等NoSql⼗⼆、Nginx的配置与使⽤。
Java面试题附答案合集(腾讯、阿里、字节跳动、百度、美团)

Java⾯试题附答案合集(腾讯、阿⾥、字节跳动、百度、美团)这些⾯试题都是互联⽹⼤⼚真实流出的⾯试内容,每个问题都附带完整详细的答案,不像⽹上的那些资料三教九流有的甚⾄还没答案,这些⾯试题我也是经过⽇积⽉累才整理出来的精品资料。
这些⾯试题主要是针对1-5年左右的Java开发程序员提升的,不管是传统⾏业还是互联⽹⾏业,掌握这些技术基本都能拿到⼀个不错的薪资,希望对⼤家有所帮助。
⾯试真题-按知识点划分1. Java语法基础⾯试专题及答案:pdf2. Java集合_⾯试专题及答案.pdf并发编程1. 并发编程及答案(上) .pdf2. 并发编程⾯试题整理(答案)3. 并发编程⾯试专题及答案(上) .pdf4. 并发编程⾯试专题及答案(下) .pdf5. 并发编程⾯试专题及答案(下) .pdfJVM1. JVM⾯试专题及答案(上) .pdf2. JVM⾯试专题及答案(下) .pdf3. ⾯试必问之jvm与性能优化.pdfMySQL1. MySQL_⾯试专题及答案(上) .pdf2. MySQL_⾯试专题及答案(下) .pdf3. Memcached⾯试专题及答案pdf4. SQL优化⾯试专题及答案.pdf5. MongoDB_⾯试专题及答案.pdfRedis1. Redis⾯试专题及答案(上) .pdf2. Redis.⾯试专题及答案(下) .pdf3. redis⾯试题及答案(上) .pdf4. Redis⾯试专题及答案(下) .pdf5. Redis常问的40道⾯试题(答案)MyBatis1. MyBatis⾯试专题2. Mybatis缓存pdf3. Mybatis插件.pdf4. Mbais相关概含.pdf5. Mbatis基本应⽤.pdf6. Mbais注解开发.pdf7. Mybatis架构原理pdf8. Mbais配置⽂件深⼊.pdf9. Mbais复杂映射开发.pdf10. MyBatis⾯试专题及答案.pdfSpring1. Spring⾯试专题2. Spring AOP应⽤.pdf3. SpringMVC⾯试专题4. Spring⾯试71题与答案5. SpringBoot基础回顾.pdf6. SpringBoot数据访问.pdf7. SpringBoot视图技术.pdf8. SpringBoot缓存管理.pdf9. Spring MVC⾼级技术.pdf10. Spring⾯试专题及答案.pdf11. Spring loC源码深度剖析.pdf12. Spring AOP源码深度剖析.pdf13. Spring MVC源码深度剖析.pdf14. SpringMVC⾯试专题及答案.pdf15. SpringMVC.⾯试专题及答案pdf16. SpringBoot⾯试专题及答案.pdf17. SpringBoot⾯试专题及答案. pdf18. SpringCloud⾯试专题及答案:pdf19. SpringCloud. ⾯试专题及答案pdf20. SpringBoot原理深⼊及源码剖析.pdfDubbo1. Dubbo⾯试专题及答案(上) .pdf2. Dubbo_⾯试专题及答案(下) .pdf3. Dubbo⾯试28题答案详解:核⼼功能+服务治理+架构设计等其他技术⾯试题1. Zookeeper⾯试专题及答案.pdf2. zookeeper⾯试专题及答案:pdf3. Tomcat⾯试专题及答案(上) .pdf4. Tomcat⾯试专题及答案(下) .pdf5. Nginx⾯试专题及答案.pdf6. 数据库⾯试专题及答案pdf7. ActiveMQ_ ⾯试专题及答案pdf8. RabbitMQ⾯试专题及答案.pdf9. Kafka ⾯试专题及答案.pdf10. 消息中间件⾯试专题及答案pdf11. Netty_⾯试专题及答案.pdf12. Linux ⾯试专题及答案.pdf13. 设计模式⾯试专题及答案.pdf14. 数据结构与算法⾯试专题及答案pdf15. 计算机⽹络⾯试专题及答案pdf16. ⼈事问题_⾯试专题及答案:pdf17. 多线程⾯试专题及答案pdf18. 开源框架⾯试专题及答案.pdf19. ⾯试必备之乐观锁与悲观锁.pdf20. 设计模式⾯试专题及答案pdf深圳、上海、杭州、北京、⼴州真实Java⾯试题1. 北京-百度-Java中级.pdf2. 北京-京东-Java实习⽣.pdf3. 杭州-阿⾥云Java实习⽣.pdf4. 杭州-蚂蚁⾦服-Java⾼级pdf5. 杭州-蚂蚁⾦服-资深⼯程师.pdf6. 南京-软通动⼒-Java初级pdf7. 厦门-中软国际-Java初级.pdf8. 上海拼多多-Java⾼级.pdf9. 上海携程-Java⾼级.pdf10. 深圳-OPPOJava⾼级.pdf11. 深圳-丰巢科技-Java⾼级.pdf12. 深圳|乐信-Java⾼级.pdf13. 深圳-蚂蚁⾦服-Java⾼级.pdf14. 深圳-商汤科技-Java⾼级pdf15. 深圳|腾讯-Java⾼级.pdf16. 深圳-银盛⽀付-Java中级.pdf17. 深圳-中国平安-Java中级.pdf18. Java企业⾯试真题合辑(上) .docx19. Java企业⾯试真题合辑(上) .pdf20. Java企业⾯试真题合辑(下) .pdf21. Java程序员⾯试笔试宝典.pdf22. Java程序员⾯试笔试真题库-完整版.pdf23. Java企业笔试真题收录⼤全-最新版.pdf24. ⼴州唯品会Java⼤数据开发⼯程师.pdf阿⾥巴巴Java⾯试题1. 阿⾥巴巴校招研发.pdf2. 阿⾥巴巴JavaScript⾯试题.pdf3. 阿⾥巴巴⼀蚂蚁⾦服 Java⾯试题.pdf4. 阿⾥巴巴前端开发I程师笔试⼆.pdf5. 阿⾥巴巴前端开发⼯程师笔试- - .pdf6. 阿⾥巴巴研发⼯程师笔试选择题⼆.pdf7. 阿⾥巴巴研发⼯程师笔试选择题三.pdf8. 阿⾥巴巴研发⼯程师笔试选择题四.pdf9. 阿⾥巴巴研发⼯程师笔试选择题⼀.pdf10. 阿⾥巴巴DBA⾯试题[笔试⾯试] -2..pdf11. 史上最全阿⾥巴巴JAVA⾯试题总览.pdf12. 阿⾥巴巴校招测试开发⼯程师在线笔试题- 1.pdf13. 阿⾥巴巴腾讯华为⼩⽶搜狗笔试⾯试⼋⼗题-5.pdf百度Java⾯试题1. 百度试题.pdf2. 百度校园招聘笔试题WEB前端⼯程师-电⼦科技⼤学pdf3. 百度⼈搜,阿⾥巴巴,腾讯华为⼩⽶搜狗笔试⾯试⼋⼗题-6.pdf4. 互联⽹⼤型公司(阿⾥腾讯百度等) android⾯试题⽬ (有答案).com.pdf腾讯Java⾯试题1. 腾讯试题.pdf2. 腾讯Java⾯试题.pdf3. 腾讯Java_⼯程师笔试题.pdf4. 腾讯研发I程师笔试真题⼆.pdf5. 腾讯研发⼯程师笔试真题三.pdf6. 腾讯研发⼯程师笔试真题⼀.pdf7. 腾讯⾼级软件_⼯程师、项⽬经理⾯试题- 4.pdf字节跳动Java⾯试题1. 字节跳动⾯试题.pdf2. 字节跳动(今⽇头条、抖⾳) .pdf3. 字节跳动今⽇头条、抖⾳)往期⾯试真题.pdf腾讯、阿⾥、字节跳动、百度、美团Java⾯试题合集1. 阿⾥⾯试集锦.docx2. 阿⾥⾯试题⽬总结-6.docx3. 阿⾥⾯试问题总结.docx4. 字节跳动(抖⾳⾯试题) .docx5. 最新BAT⼤数据⾯试题.docx6. 腾讯201 6研发I程师编程题_-.docx7. 阿⾥⾼级Java⾯试题70道.docx8. 腾讯201 6研发I程师编程题5.docx9. 最新BAT《前端必考⾯试》.docx10. 最全的阿⾥java⾯经(清晰版) .pdf11. 最新BAT java经典必考⾯试题.docx12. 阿⾥实习⽣客户端笔试题⽬解析-3.docx13. 腾讯校招Java、测试⼯程师笔试题com.docx14. 字节跳动前端⼯程师实习⽣笔试题汇总.docx15. 百度、腾讯、头条、美团的ava⾯试题⽬总结.docx16. 百度、腾讯、头条、美团的Java⾯试题⽬总结.com.docx。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11、BS与CS的联系与区别。
回答:C/S 是Client/Server 的缩写。
服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix 或SQL Server。
客户端需要安装专用的客户端软件。
B/S是Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQL Server等数据库。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。
浏览器通过web Server 同数据库进行数据交互。
C/S 与B/S 区别:1.硬件环境不同:C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适应范围, 一般只要有****作系统和浏览器就行2.对安全要求不同C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S 发布部分可公开信息.B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。
3.对程序架构不同C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S 有更高的要求B/S 结构的程序架构是发展的趋势, 从MS 的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使B/S更加成熟.4.软件重用不同C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子5.系统维护不同C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.6.处理问题不同C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应该都是相同的系统B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与****作系统平台关系最小.7.用户接口不同C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.8.信息流不同C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。
2、说出Servlet的生命周期,并说出Servlet和CGI的区别。
回答:Servlet被服务器实例化后,容器运行其init 方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与CGI 的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。
3、Servlet的生命周期回答:web容器加载Servlet,生命周期开始。
通过调用Servlet的init()方法进行Servlet 的初始化。
通过调用service()方法实现,根据请求的不同调用不同的do***()方法。
结束服务,web 容器调用Servlet 的destroy()方法。
JAVA面试题集(高级篇) 整理by rensn 2006-6-324、如何现实Servlet的单线程模式回答:<%@ page isThreadSafe="false"%>5、Servlet执行时一般实现哪几个方法?回答:public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()public void service(ServletRequest request,ServletResponse response)public void destroy()6、J2EE是什么?回答:J2EE 是Sun 公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterprise application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。
所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
7、开发中都用到了那些设计模式?用在什么场合?回答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。
通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。
主要用到了MVC 的设计模式。
用来开发JSP/Servlet 或者J2EE的相关应用。
简单工厂模式等。
8、j2ee常用的设计模式?说明工厂模式。
回答:Java中的23种设计模式:Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibility(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的****作。
首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。
然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。
当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
9、请对以下在J2EE中常用的名词进行解释(或简单描述)回答:web 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。
主要有WEB服务器来实现。
例如:TOMCAT,WEBLOGIC,WEBSPHERE等。
该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。
我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB 容器:Enterprise java bean 容器。
更具有行业领域特色。
他提供给运行在其__________中的组件EJB 各种管理功能。
只要满足J2EE 规范的EJB 放入该容器,马上就会被容器进行高效率的管理。
并且可以通过现成的接口来获得系统级别的服务。
例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA 命名目录服务。
主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA 消息服务。
主要实现各个应用程序之间的通讯。
包括点对点和广播。
JTA:(Java Transaction API)JAVA 事务服务。
提供各种分布式事务服务。
应用程序只需调用其提供的接口即可。
JAF:(Java Action Framework)JAVA安全认证框架。
提供一些安全控制方面的框架。
让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP: (Remote Method Invocation /internet 对象请求中介协议)他们主要用于通过远程调用服务。
例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。
当然这是要通过一定的规JAVA面试题集(高级篇) 整理by rensn 2006-6-33范才能在异构的系统之间进行通信。
RMI是JAVA特有的。
10、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法回答:Session Facade Pattern:使用SessionBean 访问EntityBeanMessage Facade Pattern:实现异步调用EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性Generic Attribute Access:通过AttibuteAccess 接口简化EntityBean数据提供特性Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。
项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。