Java作为软件编程语言常青树的存在受到了众多软件开发公司的青睐,其中也包含垄断保险行业的Java软件开发的中科软,其软件开发人员就几千人。
前段时间有幸去中科软面试,经历了一面和二面两轮面试,一面是在中科软的总部面的,分为笔试以及面试两个环节,二面是由外派方的技术人员面试的,都顺利通过,但是由于各种原因没有入职中科软,回来后感觉有必要总结一下所面试中所遇到的问题,凭借记忆总结了这篇有关中科软的面试题,希望能够对后来人有帮助。
当然有很多问题记不起来了,如果遗漏去面过的朋友可以补充。
笔试题总结
1、作用域public,private,protected,以及不写时的区别
答:区别如下:
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
2、ArrayList和Vector的区别,HashMap和Hashtable的区别
答:就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
3、char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:父类:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
6、内部类的实现方式?
答:示例代码如下:
package test;
public class OuterClass
{
private class InterClass
{
public InterClass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
输出结果:
C:\>java test/OuterClass
InterClass Create
OuterClass Create
再一个例题:
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)
A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
说明如下:
一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。故 A、B 错
二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。
故 D 错
三.非静态内部类的非静态成员可以访问外部类的非静态变量。故 C 正确
四.答案为C、E
接下来看另外一个java面试题,为什么会有这个原因就是中科软的事业部是在是太多,一个事业部一套面试题,可气的就是有些失业部的面试题完全都是英文,在作这种面试题的时候都是连蒙带骗的去做,也是无奈了你说一个java程序员面试题生生的做成了英语考试试卷。
一、JAVA
一、运行时异常和一般异常的区别?
运行时异常:
1、是虚拟机运行过程中遇到的“系统级”问题
2、这些问题在很多地方都能发生,比如ClassNotFound,所以没法去一一要求程序员捕获
非运行时异常,又叫错误:
1、是Java的类库或是程序员自己写的代码发生的异常
2、这些异常是类的开发者预期发生而且主动检测、抛出的,只在特定的位置、时机发生,是要求使用者捕获、处理的。比如IOException,那就是Java的I/O库写代码的时候主动判断文件是否存在等现象,发生现象的时候主动抛出来的,而我们用的时候也要处理它。
对于java的运行时异常是在平时的开发中经常会抛出的,在很多时候在写完一段程序之后往往需要手动去抛出异常来解决问题。
二、java语言如何进行异常处理?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或后(finally)由缺省处理器来处理。
用try来指定一块预防所有异常的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的异常的类型。
throw语句用来明确地抛出一个异常。
throws用来标明一个成员函数可能抛出的各种异常。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,异常的框架就放到堆栈上面,直到所有的try语句都完成。
三、说明类和对象实例之间的关系,并说明静态变量和实例变量的区别和使用它们的场景
类可以理解为一种类型,比如你定义了一种类型叫“人”;
对象可以理解为类中的具体的实例,“你”就是“人”中实实在在的一个对象,也就是说给类中的各个属性赋予了某一个特定的值,比如:姓名,年龄,身份证号,这样一个抽象的“人”就实例化成一个具体的实实在在存在的“人”了。
静态变量属于类,不用实例化就已经存在,所有的实例共享同一个静态变量,可以通过类名和实例名来访问。实例变量属于实例,每个实例都有自己的这个变量,只能通过实例名来访问。
四、是否可以从一个static方法内部发出对非static方法的调用
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象, 可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用, 那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
作为后端的开发人员很多时候也是要处理一些关于前端方免产生的问题的,虽然不是太多但是也要会这这一方面有所提及的。
二、Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符?
(< > & “”)——这个不会,会的哥们留下答案
三、写出你常用的关于Web安全性考虑的几方面
sec.chinabyte.com/34/13164034.shtml
防止sql注入、防止窗体和脚本泄密、Cookies和会话管理
四、表单提交中Get和Post方式的区别,forward 和redirect的区别?
表单提交中get和post方式的区别有5点
1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据 队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中大量为80KB,IIS5中为100KB。
5.get安全性非常低,post安全性较高。
forward是你打电话问同事,明天上班不?你经理就在你同事身边,所以电话没挂,同事问了经理然后告诉你,明天是要上班。
redirect你问同事,明天上班不?你同事他也不知道,但他告诉了你们经理的电话,让你打电话问经理,然后你就得挂电话,重新打个电话给你经理。
//blog.csdn.net/john2522/article/details/7438799
五、Jsp有哪些内置对象,作用分别是什么?
JSP共有以下9种基本内置组件
1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。
2、response对象 响应客户请求的有关信息
3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
4、out对象 它是JspWriter类的实例,是向客户端输出内容常用的对象
5、page对象 它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例
6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭
7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问
9、config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的
六、开源框架和设计模式
一、请解释mvc和struts的关系,简要讲解如何应用Struts进行开发?说明Struts的几种常用标签及他们的作用
MVC是一种软件开发的架构,M指的是业务处理模型,也就是业务处理层;V指的是视图,也就是展示层;C指的是控制,也就是完成展示层和模型层之间的转接控制
struts是一种mvc架构的实现框架,为开发者提供方便的mvc使用
网址:
//wenku.baidu.com/link?url=HvAaLi18q8WwH3BTBhngnEl6crSZrylZF-vZryeU1QhCVg4hUwpwaMp7Z9WX5q5VQqM09YCtjlvNFDHKOOaycwPyUCaLMQIlkVqVNTLd6ri
二、Hibernate为什么提供了延迟加载?起什么作用?数据库有没有提供相应的延迟加载功能,hibernate是如何配置实现延迟加载的?
三、为什么使用Ajax?Ajax主要用在哪些地方?使用Ajax的缺点是什么?
以上就是中科软所面试到的或者朋友面试到的几个事业部门所做的面试题,因为是凭借记忆整理的一些题目,如果有补充可以评论中添加。
热点新闻