一不小心也升星了,可感觉自己什么也没做啊!

blueice2002 2004-08-05 12:31:29
为避免灌水嫌疑,把最近收集的一些东西帖出来给大家。这些东西并不是asp的,XDJM们能用就用吧!
由于本人已经转向java开发,正在努力学习中,但web版我还是会常来看看的。

一、sql 部分(转帖)

在SQLSERVER内如何得到一个字段的数据类型

select t.name from systypes t,syscolumns c
where c.usertype=t.usertype
and c.id=object_id('t')
and c.name='number'
______________________________________________________________________________
用什么方法得到数据库里所有的表的名称
SELECT * FROM SYSOBJECTS WHERE XTYPE = 'U'

SELECT * FROM SYSOBJECTS
sysobjects
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

列名 数据类型 描述
name sysname 对象名。
Id int 对象标识号。
xtype char(2) 对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程

uid smallint 所有者对象的用户 ID。
info smallint 保留。仅限内部使用。
status int 保留。仅限内部使用。
base_schema_
ver int 保留。仅限内部使用。
replinfo int 保留。供复制使用。
parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
crdate datetime 对象的创建日期。
ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
schema_ver int 版本号,该版本号在每次表的架构更改时都增加。
stats_schema_
ver int 保留。仅限内部使用。
type char(2) 对象类型。可以是下列值之一:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程

userstat smallint 保留。
sysstat smallint 内部状态信息。
indexdel smallint 保留。
refdate datetime 留作以后使用。
version int 留作以后使用。
deltrig int 保留。
instrig int 保留。
updtrig int 保留。
seltrig int 保留。
category int 用于发布、约束和标识。
cache smallint 保留。
______________________________________________________________________
取数据库表结构(包括字段类型、主键)的SQL

SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
(case when a.isnullable=1 then '√'else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],'') AS N'字段说明'
--into ##tx

FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid
order by object_name(a.id),a.colorder
_________________________________________________________
SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
(case when a.isnullable=1 then '√'else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],'') AS N'字段说明'
--into ##tx

FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name='test'--表名
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid
--order by object_name(a.id),a.colorder

...全文
148 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
coolsniper 2004-08-05
马甲接点分
回复
blueice2002 2004-08-05
java的新东西真多啊,有没有人一起学习啊!
回复
zltostem 2004-08-05
恭喜
回复
超级大笨狼 2004-08-05
恭喜!!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
___ __ __
/ __ \ __ __ /\ \ /\ \
/ /_/\ \ /\ \ /\ \\ \ \ \ \ \
/\ \ \ \ \\ \ \ \ \ \\ \ \ \ \ \
\ \ \_\_\ \\ \ \_\_\ \\ \ \___\ \ \___
\ \_______\\ \_______\\ \____\\ \____ \/_______/ \/_______/ \/____/ \/____/
__ __ ___ __ ________
/\ \ /\ \ /\ _\ _______ /\ \ /\ _____ \ \ \ \| \\/| | /\ ___ \\ \ \ \ \ \___/_
\ \ \ | \|| | \ \ \_/\ \\ \ \ \ \ ____\
\ \ \| |\ \| | \ \ \\_\ \\ \ \__ \ \ \___/
\ \___|\\___/ \ \______\\ \____\\ \___\
\/___/ /__/ \/______/ \/____/ \/___/
回复
BlueDestiny 2004-08-05
3 floor
恭喜恭喜~
回复
grantbb 2004-08-05
恭喜搂主升星,学习,努力中
回复
blueice2002 2004-08-05
上面的解答是我找的一些资料。不对的地方请帖正解
回复
dout 2004-08-05
up1
恭喜
希望多多帮忙
回复
blueice2002 2004-08-05
第十三,Java有没有goto?
很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。

第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组有size(),String有lenth()

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
常问。
我想说说我认识的这三个单词:overload、override和polymorphism。

>>overload(通常被翻译为过载或重载)

一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。

>>override(通常被翻译为覆盖)

一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。

考虑这样两个类:

class Father {
public void doSomething(){}
public void doSomething(int a){}
public void doSomething(String s, int a){}
}

class Son extends Father {
public void doSomething(String s, int a) {}
public void doSomething(int a, String s){}
}

Father类中有3个doSomething方法,唯一的区别是参数类型列表,它们是overload了的方法。再看子类,第一个方法也叫doSomething,且父类中有一个doSomething方法和这个方法的参数类型列表相同,所以这是override;而第二个方法虽然名字也叫doSomething,但它的参数类型列表跟父类中和子类中其他的doSomething方法的参数类型列表不一致,所以编译器默认这是一个overload的方法。那实际上我们有多少种方式来调用Son的实例呢?如下:

new Son().dosomething();
new Son().dosomething(3);
new Son().dosomething("Hi", 5);
new Son().dosomething(7, "Hello");

其中前三个是从父类继承的,且第三个是调用的子类的那个public void doSomething(String s, int a){}方法,最后一个是在子类中新定义的一个overload的方法。

注意:overload是指同样的东西在不同的地方具有多种含义,而override是指它随时随地都只有一种含义。

>>polymorphism(通常被翻译为多态或多形)

"polymorphism也叫做dynamic-binding、late-binding或者、runtime-binding,从字面理解意味着多种不同的形态。在面向对象的程序设计中,我们有相同的外观(基类的通用接口)以及使用那个外观的不同形式:动态绑定或组织的、不同版本的方法。......人们经常混淆Java其他的、非面向对象的特性,比如方法过载(method overload)等,这些特征有时也具备面向对象的某些特征。但不要被愚弄:如果随后没有发生绑定,就不成其为polymorphism。" - Bruce Eckel

考虑上面的例子,如果有一个类定义了一个方法以Father对象为参数,另一个方法调用这个方法:

public void callHimUp(Father m) {
m.doSomething("Get up!", 7);
}

public void chooseFromFatherAndSon(boolean isMorning) {
Father m;
if (isMorning) {
m = new Father();
} else {
m = new Son();
}
callHimUp(m);
}

编译时编译器并不知道究竟最后哪一个类的public void doSomething(String s, int a) {}方法会被调用,这个只有在运行期才知道。这就是晚绑定,这就是多态。

=========================================================
我的意思很明白了,重载不是多态,甚至不是OOP的特性,只有存在晚绑定,才能成其为多态。欢迎讨论。


第十六,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类?
不可以public final class String

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前

第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

第三十二,编程题: 写一个Singleton出来。


好先说这么一些。


回复
blueice2002 2004-08-05
三、java部分
Java陷阱一箩筐----面试题集 doodoofish [原作]
关键字 Java陷阱一箩筐----面试题集
出处

找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司。

面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去买彩票, 说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能用IDE来解决。你必须在任何情况下准确回答这些问题,在面试中如果出现一两题回答不准确很 有可能你就被拒之门外了。

当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或command design pattern,他们都是老一辈了,最喜欢问的就是基础知识。别小看了这些基础,我朋友水平一流,结果就栽在一到基础知识的问题下,和高薪无缘。

好了废话少说,开始正题。

第一,谈谈final, finally, finalize的区别。
final的赋值后不能更改
static的是类的变量,也就是所有类的实例共享一个变量
最常被问到。

final有三层意思:
当用来修饰变量时,表示变量只能被赋值一次,以后不能更改;当修饰类时类不能被扩展,譬如String类声明为public final class String;当修饰方法时,方法不能被override;

static有两层意思:
当修饰变量时,表示变量属于一个类,为类的所有实例共享;当修饰方法时,表示方法没有this参数,调用static方法不需要创建一个类的实例,同时static方法也不能访问实例字段(非static的字段);

finally:
finally块是无论如何都会执行的,而且我觉得finally块最大的用处就是释放掉一些资源原因在于finally中的代码会在try中的return之前被执行,如果finally有return就直接返回了,执行不到try块中的return.
try{
//这里的某个方法必须有thows IOExecption
}catch(IOException e){
//如果在try块中有IOException抛出将转到这里。
}finally{
//这里的代码除非前面有System.exit(0)才不运行(就算是return语句也会运行)
}
java是强制捕捉异常的。

finalize:
1. 垃圾回收的时候首先会调用 finalize()方法
2. 但你永远不知道什么时候垃圾才会回收. 这是jvm的事,它是不确定的.可能永远也不会回收
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

简单来说,使用一个inner class 是为了封装性而已,假设有一个class 叫做A,如果你想写一个类B对A中的元素进行某些操作,你设计的时候是想B只需要在class A的内部有效,不想其他类访问到B的话,就可以使用inner class啦。
例如你写了一个类叫MyList
MyList中有一些对象,假设叫做是一个叫做MyListItem类的对象,如果你只想让MyList类可以操作MyListItem类的对象,你就可以让class MyListItem作为MyList的inner class,这样就可以避免其他类对MyListItem操作,或者说其他类根本不知道你的MyList中是否是用MyListItem来保存列表的项的,这样就提高了封装性和可维护性啦

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

第四,&和&&的区别。
这个问得很少。

第五,HashMap和Hashtable的区别。
常问。
hashMap和HashTable差不多,
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
虽然java2 并没有摈弃Dictionary,由于它被Map所取代,从而被认为是过时的。功能上差不多。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在
多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
hashmap运用对象的hashCode()函数,快速找到key,这样可以提高查询的效率

第六,Collection 和 Collections的区别。
你千万别说一个是单数一个是复数。

第七,什么时候用assert。
API级的技术人员有可能会问这个。

第八,GC是什么? 为什么要有GC?
基础。

第九,String s = new String("xyz");创建了几个String Object?

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)=12
Math.round(-11.5)=-11

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
面试题都是很变态的,要做好受虐的准备。
1 被认为是int型

第十二,sleep() 和 wait() 有什么区别?
搞线程的最爱。

wait()是从Obejct类继承的,对所有类的实例都可以调用wait(),还有就是wait()的对象可以被notify()或者notifyAll()唤醒。

sleep()是Thread的方法,不对所有类的实例适用,不可被唤醒,可以被打断,通过Thread类的interrupt()方法。还有就是sleep()必须带参数指明毫秒数。

通俗的说wait跟sleep都是多线程中运用的技术
他们之间有所区别,楼主需要加以区分,正象楼上所说的那样wait是起到将当前线程阻塞的作用,当线程执行到此时,则终止等待notify或notifyall去激活被阻塞的线程而sleep也是一种线程阻塞机制,与wait不同的是他能够自我唤醒这唤醒的时机取决于sleep参数设置的多少?过了这个时间sleep所在的线程将被自我换醒继续进行~~你明白了嘛!

可能我前面说的那些不是wait()和sleep()两者之间区别的全部,也许我表达不够准确,但是我不认为我说的"对所有类的实例都可以调用wait()"和"sleep()是Thread的方法,不对所有类的实例适用"是错的。

先看看Java的文档是怎么写的:

[java.lang.Thread.sleep()]
public static void sleep(long millis) throws InterruptedException
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.
>>使当前执行的线程在指定毫秒数内暂时停止执行,该线程不放弃对任何监视器的所有权。

[java.lang.Object.wait()]
public final void wait() throws InterruptedException
Causes current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object. In other words, this method behaves exactly as if it simply performs the call wait(0).
>>使当前线程等待,直至其他线程调用该对象的notify()或者notifyAll()方法。换言之,该方法(即不带参数的方法)跟它执行wait(0)方法的效果是完全一致的。
The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution.
>>当前线程必须拥有该对象的监视器。线程放弃该对象监视器的所有权,然后等待其他线程通过notify()或者notifyAll()方法的调用告知等待该对象的监视器的线程"醒来"。(当然也包括我们的这个调用了wait()方法的线程)
This method should only be called by a thread that is the owner of this object's monitor. See the notify method for a description of the ways in which a thread can become the owner of a monitor.
>>只有拥有该对象监视器的线程才能调用该方法。参见notify方法关于线程如何成为对象监视器所有者的描述。

wait()是从Obejct类继承的,而所有类都以Object为基类,所以所有类的实例都有其wait()方法供调用,调用该对象的该方法的线程会进入等待状态,直到被其他线程在这同一个个对象上调用了notify()或者notifyAll(),或者到达了指定的时间。

sleep()是Thread的方法,不对所有类的实例适用,因为如果这个类不是直接或间接的继承了Thread类,它就没有我们说的这个sleep()方法。调用了sleep()的线程不可被唤醒,因为没有相应的notify()和notifyAll(),但是可以被打断,通过Thread类的interrupt()方法,如果不被打断,线程将在指定时间过了以后自动"醒来"。另外说明一点,默认没有不带参数的sleep()方法,要使用sleep(),必须指明等待时间。

很通俗的说,wait()可以使进程访问的临界资源cs拥有一把锁。当有进程访问的时候,进程获得锁,然后其他进程就不可以进入了。所谓notify()就是去解开锁。
但是,值得一提的事,现在不提倡使用wait()因为它的机制在os中很容易引起死锁

至于sleep(),我想上面的大虾都说得很详细了

回复
blueice2002 2004-08-05
二、oracle部分
使用序列
方法:
1.创建sequence就可以
create sequence seq_name
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
可以直接在插入时调用seq_name.nextval;
如insert into table_name(proid) values(seq_name.nextval);

2.也可以创建触发器(同时要创建sequence):
create or replace trigger trg_name
before insert on table_name
for each row
begin
select seq_name.nextval into :new.proid from dual;
end;
/
创建表空间:SITETANG
CREATE TABLESPACE "SITETANG"
LOGGING
DATAFILE 'D:\ORACLE\ORADATA\MASTER\SITETANGA.ora' SIZE 5M

创建用户USER_TANG,密码:password
CREATE USER "USER_TANG" PROFILE "DEFAULT" IDENTIFIED BY
"password" DEFAULT
TABLESPACE "SITETANG" TEMPORARY
TABLESPACE "SITETANG" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "USER_TANG";

为用户USER_TANG增加DBA角色
GRANT "DBA" TO "USER_TANG";
ALTER USER "USER_TANG" DEFAULT ROLE ALL


创建表MESSAGE
CREATE TABLE "USER_TANG"."MESSAGE"("MESSAGEID" NUMBER(4) NOT
NULL, "MEDSSAGETITLE" VARCHAR2(255), "MESSAGTIME" VARCHAR2(20),
CONSTRAINT "" PRIMARY KEY("MESSAGEID"), UNIQUE("MESSAGEID"))
TABLESPACE "SITETANG"
CREATE TABLE "USER_TANG"."MESSAGE"("MESSAGEID" NUMBER(4) NOT
NULL, "MEDSSAGETITLE" VARCHAR2(255), "MESSAGTIME" VARCHAR2(20),
PRIMARY KEY("MESSAGEID", "MEDSSAGETITLE", "MESSAGTIME"), UNIQUE(
"MESSAGEID"))
TABLESPACE "SITETANG"

创建方案USER_TANG的序列MESSAGEID
CREATE SEQUENCE "USER_TANG"."MESSAGEID" INCREMENT BY 1 START
WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER
回复
chengbo1983 2004-08-05
JF
回复
kebeixueng 2004-08-05
也沾一下光,偶昨天多了一个角:)
回复
skystar008 2004-08-05
恭喜楼主,楼主牛人。
回复
王西之 2004-08-05
晕 长 看不懂

恭喜一下!
回复
chan2chen 2004-08-05
楼主 →弓虽
回复
dragon2005 2004-08-05
向楼主学习。
回复
GageCSDN 2004-08-05
恭喜呀,我也是刚升星星的,一起庆祝
回复
driftarter 2004-08-05
向楼主学习
回复
okdw 2004-08-05
个人用.net还真是好用
回复
发帖
非技术区
创建于2007-09-28

2071

社区成员

Web 开发 非技术区
申请成为版主
帖子事件
创建了帖子
2004-08-05 12:31
社区公告
暂无公告