实习面试:java工程师

折腾了三个小时的收获:

卷子,都是一些java的基础,很基础很基础的,比如写上一句话,问这句话在编译时出错还是在运行时出错...,java回收机制是否合法,数组的定义等等...

对于面试,记录一下:

1:collection和collections的区别.

(1)先说定义:

Collections的定义是: public class Collections

Collection定义为: public interface Collection<E> extends Iterable<E>

也就是说,一个是接口一个是类

(2)再说功能:

查看Collections的源码会发现,她下面定义的一些方法都是用public static ****来实现的,也就是说,Collections是一个操作集合的工具了,在进行相关的操作时,可以直接调用Collections.***方法.

查看Collection的源码,因为她是一个接口,所以,她相当于定义了要实现她的那些类的一个规范,定义了一些操作常用的方法,比如isEmpty(),toArray(),size().

2:用过哪些collection

对于我们常用的List,Map和Set,一定要搞清楚其中的关系,其中,List和Set是Collection的子接口,而Map是一个接口,可以认为和Collection同等地位的一个接口.

Collection的实现类中,常用的有:ArrayList,HashSet,LinkedList,Stack,TreeSet.

看了一下ArrayList的源码,原来就是定义的一个Object数组... :

private transient Object[] elementData;

//transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。

Map是一个键值对,将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。常见的她的实现类有:HashMap,HashTable,TreeMap.

3:如何实现分页

对于非常多的数据,我们总不能查找出来放到内存中然后去分页吧,太不可思议了,所以,应该找一个办法:

不过,我还不知道具体怎么办...

4:Filter的工作原理

我抄的:

"

当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,这个 Filter 就成了 Servlet 容器与该 Servlet 程序的通信线路上的一道关卡,该 Filter 可以对 Servlet 容器发送给 Servlet 程序的请求和 Servlet 程序回送给 Servlet 容器的相应进行拦截,可以决定是否将请求继续传递给 Servlet 程序,以及对请求和相应信息是否进行修改.

在一个 web 应用程序中可以注册多个 Filter 程序,每个 Filter 程序都可以对一个或一组 Servlet 程序进行拦截。

若有多个 Filter 程序对某个 Servlet 程序的访问过程进行拦截,当针对该 Servlet 的访问请求到达时,web 容器将把这多个 Filter 程序组合成一个 Filter 链(过滤器链)。Filter 链中各个 Filter 的拦截顺序与它们在应用程序的 web.xml 中映射的顺序一致

"

5:struts2的工作原理

web请求,根据struts.xml找到对应的Action,执行都action()方法,返回一个String,对应struts.xml中的返回页面,找到要返回的页面,之后显示出来.

6:类之间的关系

对于这个问题,我只有一个词"继承",哈哈,竟然忘记了以前的UML了,看来,真的是没有用过就忘记啦!现在好好总结一下:

类与类之间存在的关系有:

(1)泛化(Generalization)
(2)关联(Association)
(3)依赖(Dependency)
(4)聚合(Aggregation)

6.1.泛化(Generalization)

[泛化]

表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。

[具体表现]

父类 父类实例=new 子类()

[UML图](图1.1)

图1.1 Animal类与Tiger类,Dog类的泛化关系

[代码表现]

class Animal{} class Tiger extends Animal{} public class Test { public void test() { Animal a=new Tiger(); } }


2.依赖(Dependency)

[依赖]

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。

[具体表现]

依赖关系表现在局部变量,方法的参数,以及对静态方法的调用

[现实例子]

比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作

[UML表现](图1.2)

图1.2 Person类与Screwdriver类的依赖关系

[代码表现]
public class Person{ /** 拧螺丝 */ public void screw(Screwdriver screwdriver){ screwdriver.screw(); } }
6.3.关联(Association)

[关联]

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。

[具体表现]

关联关系是使用实例变量来实现

[现实例子]

比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司

[UML图] (图1.3)

图1.3 公司和员工的关联关系

[代码表现]
public class Company{ private Employee employee; public Employee getEmployee(){ return employee; } public void setEmployee(Employee employee){ this.employee=employee; } //公司运作 public void run(){ employee.startWorking(); } }
(4)聚合(Aggregation)

[聚合]

当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。

[具体表现]

与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。

[关联与聚合的区别]

(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。

聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

(2) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。

[UML图](图1.4)

图1.4 电脑和组件的聚合关系

[代码表现]
public class Computer{ private CPU cpu; public CPU getCPU(){ return cpu; } public void setCPU(CPU cpu){ this.cpu=cpu; } //开启电脑 public void start(){ //cpu运作 cpu.run(); }

7:学过哪些设计模式,举例说明

这个问题应该好好回忆一下了...

8:linux下查找文件命令

find -name lele.xml;

其实还有其他参数的,主要是看看用过没有啦

9:读过哪些java方面的书籍

我其实都忘了...反正有点乱,有时间要整理一下...

10:HashTable和HashMap的区别

这个没有回答上,因为一点都没有接触.

看看他写的文章:

http://blog.csdn.net/ago52030/article/details/2287041

"

1 HashMap不是线程安全的

hastmap是一个接口,是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。

HashMap允许null key和null value,而hashtable不允许。

2 HashTable是线程安全的一个Collection。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

"

11:针对某个项目进行介绍

上一篇面试文章中已经介绍过了,最好是自己平时就想好一个,因为临场发挥的话,可能显得语无伦次...切忌扩大化,切忌切忌...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值