上午去一家公司面试,给了一份题,做了二十分钟答了没几道自感功力不够, 题目不是很多,记得有这么几道: 1. 两个字符串变量 string a,b ;以ascii存储编程连接两个字符串 例如:string a ="abcd " , string b ="defgh" ; 返回结果:abcddefgh 要求: a. 不能使用任何类库函数 b. 写几个测试用例测试它 不知道,呜呜~。。~ 2. 谈谈进程,线程,应用程序域的区别 进程是并发程序在数据集合上的执行过程 线程是进程的一部分,是进程的一个或多个指令的执行流,可以降低进程所带来的系统开销,是系统更好的并发性 。Net中,应用程序域[AppDomain]是程序在一种独立执行的环境,为执行托管代码提供隔离、卸载、安全。 一个进程可以有多个AppDomain AppDomain和线程没有一对一的关系,但是在特定时间,一个Thread必须在一个AppDomain中。 3.谈谈DataSet和DataReader的区别 DataReader,DataSet都是用来检索、存储数据,但是它们也有一定的区别 DataSet对象是指一个内存中的数据缓存,它包含一个表和这些表之间关系的集合,每个表包含列集合;可看作是一个离线的数据库,支持断开式连接。 DataReader提供一个来自数据库的快速、仅向前、只读数据流,从DataReader读数据时,需要将Connection对象打开,与数据库保持连接,即不支持断开式连接。 4.asp.net有几种身份验证方式,在你最近的项目中用过哪种,为什么? >asp.net分 Forms Authentication,Window Authentication,Passport Authentication三种验证方式 >我们的项目采用Forms验证 > Window Authentication是基于 IIs的身份验证,不符合商业模式。 Passport Authenticaiton是基于Microsoft 的集中身份验证服务器的验证,不灵活、也不好控制。 Forms Authenctication 是基于Cookies的,用它来保存用户凭证。 所以我们采用的是Forms验证. 5. 有scores表: id name score 1 张三 80 2 张三 89 3 张三 89 4 李四 89 5 李四 89 6 王五 89 要求: a. 写一个sql语句,每个name只取一条记录出来 --创建测试数据库 CREATE DATABASE Interview GO USE Interview GO --创建表 CREATE TABLE Scores(id int,name nvarchar(50),score int) GO --插入数据 INSERT Scores SELECT 1, '张三', 80 UNION ALL SELECT 2, '张三', 89 UNION ALL SELECT 3, '张三', 89 UNION ALL SELECT 4 ,'李四', 89 UNION ALL SELECT 5, '李四', 89 UNION ALL SELECT 6, '王五', 89 GO --查看数据 SELECT * FROM Scores --a --method1 SELECT * FROM Scores WHERE id in (SELECT MAX(id) FROM Scores GROUP BY name) --method2 SELECT * FROM Scores a WHERE id in ( SELECT TOP 1 ID FROM Scores b WHERE a.name=b.name order by id DESC ) --method3 SELECT * FROM Scores a WHERE 1>( SELECT COUNT(0) from Scores b where b.name=a.name and b.id>a.id ) --method4 SELECT * FROM Scores a WHERE not exists( SELECT * from Scores b where b.name=a.name and b.id>a.id ) b. 写一个语句,删除表中记录使每个name只有一条记录 DELETE FROM Scores WHERE id not in ( SELECT a.id FROM Scores a WHERE not exists( SELECT * from Scores b where b.name=a.name and b.id>a.id ) ) SELECT * FROM Scores c. 从数据库设计层面设计数据表,使一个用户在表中只能有一条记录 CREATE TABLE Students ( id int IDENTITY(1,1) PRIMARY KEY, Name nvarchar(100) NOT NULL UNIQUE NONCLUSTERED) GO INSERT Students SELECT a.NAME FROM Scores a WHERE not exists( SELECT * from Scores b where b.name=a.name and b.id>a.id ) GO SELECT * FROM Students