您的位置:首页 > 职场人生

面试题目之一

2010-07-20 23:21 155 查看
(1) software life cycle

: 按照个人理解应该是“软件生命周期”, 暂且由此分析。

她分为六个阶段:

1) 问题的定义及规划

2) 需求分析

3) 软件设计

4) 程序编码

5) 软件测试

6) 运行维护

 

(2) 在下列表格内, age 和Fa字段的值有很多重复的,

Table Ez{

     Id    int pK,

     Age int,

     Fa   number(8,2)

};

1) 写一个SQL语句,把所有重复的Fa找出来

MySQL方法:

Select fa From Ez
group by fa
having (count(*))>1

Oracel 方法之一:

select
 rowid,name
 ,sex from
 student

where
 student.rowid not
 in
(  

  select
 max
(t1.rowid)  from
 student t1 group
 by
 t1.name
,t1.sex  );

2)写个SQL语句,把所有重复的Fa中年龄不是最小的记录删除。比如Fa是200的当中,年龄最小的是20,那么就保留一个age为20的,其他的都要删除。

MySQL方法:

select * from Eg a where exists (select * from Eg b where a.sex = b.sex and a.age > b.age)

 

(3)计算下面的结果

int y = 10 ;

        do{

            y-- ;

        }while(--y);

        printf("%d/n",y--);

 

(4) JAVA
的内存分配
有几种类型

存储分配:

1 寄存器
(Registers)。这是速度最快的场所,因为寄存器委员处理器的内部,这一点和其他种类的存储媒介都不一样。不过,由于
寄存器格式有限所以编译器会根据本身需求适当的分配寄存器来使用。作为一个程序员,你不仅无法直接碰触暂存器,也没办法在程序里头感觉到寄存器的任何存在
迹象。

2 Stack
(栈),位于一般的RAM中。处理器经由其指针提供直接支持。档程序分配一块新的内存时,stack指,针便往后移;释放内存
时,指针则往前移回。这种方式不仅很快,效率也高,速度仅次于寄存器。由于java编译器有责任产生“将指针前后移动”的程序代码,所以他必须能够完全掌
握他所编译的程序中“存在stack里头的所有数据的实际大小和存活时间”。突刺以来便会先知程序的弹性。由于这个限制,尽管我们可以将对象的
reference存储于stack内,但却不能将一般的java对象也置于其上。

3 Heap
(堆)。heap是一种通用性质的内存储空间(也存
在于RAM),用来置放所以java对象。heap胜过stack之处在于编译器不需知道究竟得从Heap中分配多少空间,也不知道需从heap上分配的
空间能存活董酒。因此,自heap中分配存储空间可以获得高度的弹性。每当你需要产生对象,只需在程序代码中使用new,那么当他执行的时候,便会自
heap分配空间。当然,你得为这样的弹性付出代价:从heap分配空间,比从stack分配所耗费的时间多了不少。

4 静态存储空间
。静态存储空
间存放着“程序执行期间”一直存在的数据。你可以使用关键字static,将某个对象内的特定成员设为静态,但java对象本身绝无可能置于静态存储空间
中。

5常量存储空间。常量值常常会被直接置于程序代码里头。因为常量是不会改变的,所以是安全的。有时候常量会和外界隔离开来,所以也可以放到
ROM中。

6 non-RAM存储空间
。如果数据完全存活于程序之外,那么即使程序不执行,数据也能偶继续存在,脱离程序的控制。streamed
objects和persistent object便是两个主要例子。在streamed
objects形式中,对象被转换为一连串的bytes。这些bytes通常用来传输到另一部机器。在persistent
object形式中,对象被存储于磁盘,所以即使程序结束了,这些对象的状态还能够继续保有。此类存储空间的特点在于,它们能够将对象转换为可存储于其他
媒介的形式,并在必要时将所存储的数据还原成可存储于RAM的一半对象。

 

(5) JAVA的线程实现有几种方式

1) 继承Thread类

2) 实现 Runnable接口

 

(6) GC是什么, 描述下有几种算法实现方式

Garbage Collection: 垃圾回收机制

 

(7) Override和Overload之间的区别

override是覆写
: 对应于
OO
编程的继承特性
,意思就是在子类中重写父类中的方法;   

overload是重载
: 对应于
OO
编程的多态特性
,意思就是在同一个类中同样名称的多个方法,

这多个方法之间的区别在他
们的参数列不同。

 
待续...

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息