TZH的笔试,问题主要出现在t-sql上。
笔试原题:
id | value |
1 | 1 |
2 | 1 |
5 | 2 |
6 | 2 |
8 | 3 |
9 | 3 |
难:求按id排序的分组统计
id | value |
1 | 2 |
2 | 4 |
3 | 6 |
中:按奇数分组统计
低:统计分组
扩展1:
有一张学生表,字段有id,cid,name,cid,score,求品均成绩小于60的学生的。
/*
Navicat MySQL Data Transfer
Source Host : localhost:3306
Source Database : tzh
Target Host : localhost:3306
Target Database : tzh
Date: 2012-02-14 21:58:36
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(4) NOT NULL,
`sid` int(4) default NULL,
`name` varchar(200) default NULL,
`cid` int(4) default NULL,
`score` int(4) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '1', '1', '1', '50');
INSERT INTO `student` VALUES ('2', '1', '1', '2', '60');
INSERT INTO `student` VALUES ('3', '1', '1', '3', '70');
INSERT INTO `student` VALUES ('4', '1', '1', '4', '80');
INSERT INTO `student` VALUES ('5', '2', '2', '1', '50');
INSERT INTO `student` VALUES ('6', '2', '2', '2', '60');
INSERT INTO `student` VALUES ('7', '2', '2', '3', '55');
INSERT INTO `student` VALUES ('8', '2', '2', '4', '67');
select cid,name,avg(score) from student group by cid having score<60
解答的时候愣是没想起来having,用了where被指出错误,还没想起来,后来还是面试官告诉的我,悲催啊。
扩展2:
有一张临时表temp,字段为id,value,有一张表A,字段也为id,value。将临时表更新到A表。
update a t1 , temp t2 set t1.value = t2.value where t1.id = t2.id ;
扩展3:
有一张临时表temp,字段为id,value,有一张表A,字段也为id,value。将临时表插入到A表中。
insert into A(id,value) select id,value from temp
insert into A(id,value) select t.id,t.value from temp as t where t.id not in(select a.id as id from A as a);
YFWL
1堆和栈的区别?
栈负责保存我们的代码执行(或调用)路径,而堆则负责保存对象(或者说数据,接下来将谈到很多关于堆的问题)的路径。
2死锁的条件,解决死锁的办法?
死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。死锁产生有四个必要的条件:互斥条件,不可剥夺条件,部分分配,循环等待。
措施:
1、采用资源静态分配策略,破坏"部分分配"条件;
2、允许进程剥夺使用其他进程占有的资源,从而破坏"不可剥夺"条件;
3、采用资源有序分配法,破坏"环路"条件。
解决死锁的另一条途径是死锁检测方法,这种方法对资源的分配不加限制,即允许死锁的发生。但系统定时地运行一个"死锁检测"程序,判断系统是否已发生死锁,若检测到死锁发生则设法加以解除。
解除死锁常常采用下面两种方法:1、资源剥夺法;2、撤消进程法
3事物的定义以及特性,.net中的实现情况。
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
事务必须具备 ACID 属性,即原子性、一致性、隔离性和持续性。
aSQL事务 sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务: 优点:执行效率最佳 限制:事务上下文仅在数据库中调用,难以实现复杂的业务逻辑。
b ADO.net事务 Ado.net事务可能是大家一般都用的 优点:简单,效率和数据库事务差不多。 缺点:事务不能跨数据库,只能在一个数据库连接上。如果是两个数据库上就不能使用该事务了。
c TransactionScope事务 TransactionScope事务类,它可以使代码块成为事务性代码。并自动提升为分布式事务 优点:实现简单,同时能够自动提升为分布式事务。
d COM+事务 在分布式应用程序中,往往要同时操作多个数据库,使用数据库事务就不能满足业务的要求了。在COM+中,提供完整的事务处理服务。很方便处理多个数据库上的事务。
PS:http://www.cnblogs.com/jonescheng/archive/2008/07/22/1249043.html
4socket同步通讯的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源
5取表的20-40条记录。
select top 20 * from A where Id not in( select top 20 Id from A order by Id asc ) order by id asc;
PS1:从publish 表中取出第 n 条到第 m 条的记录: SELECT TOP m-n+1 * FROM publish WHERE (id NOT IN (SELECT TOP n-1 id FROM publish))
PS2:发现在峰哥电脑上的mysql运行不成功,原来mysql有他自己的关键字:select * from t_article order by id limit 4, 2
6asp.net页面生命周期.
页请求 | 页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。 |
开始 | 在开始阶段,将设置页属性,如 Request 和 Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。 |
页初始化 | 页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。 |
加载 | 加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。 |
验证 | 在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。 |
回发事件处理 | 如果请求是回发请求,则将调用所有事件处理程序。 |
呈现 | 在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 中。 |
卸载 | 完全呈现页并已将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性(如 Response 和 Request)并执行清理。 |
面试准备:
SQL行列转换
2000方法:
select name,
max(case [subject] when case '语文' then score else 0 end) as '语文',
max(case [subject] when case '数学' then score else 0 end) as '数学',
max(case [subject] when case '物理' then score else 0 end) as '物理'
from students
group by name;
2005pivot方法:
select name,max(语文),max(语文),max(语文)
from students as s
pivot(max(score) for [subject] in (语文,数学,物理) as ss
group by name
ps:http://www.cnblogs.com/zhangq723/archive/2011/04/22/2024776.html
HCTX
1.asp与asp.net的区别
ASP.Net与ASP的主要区别在于前者是编译(Compile)执行,而后者是解释(Interpret)执行,前者比后者有更高的效率。
2.oledbconnection和sqlconnection的区别及使用
oledbconnection连接到 OLE DB 数据源 ,sqlconnection连接到 SQL Server。
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
// Do work here.
}
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here.
}
PS:http://teddywang.iteye.com/blog/490504
连接实例:
ACCESS
string conStr=@"provider=microsoft.Jet.OleDb.4.0;data source=d:\\accessData.mdb;uid=sa;pwd=dd";
SQL SERVER
string conStr=@"Server=bwj;database=demo;uid=sa;pwd=";
ORACLE
string conStr=@"Provider=MSDAORA.1;Password=pwd;User ID=user_name;Data Source=link_str"
3.统计“," -- "1234,1215,1236,1237".
4.sql题
Customer
CustId CustNo CustName
1 a01 移动
2 a02 联通
3 a03 电信
Price
CustId CustPay
1 20000
3 40000
1 5000
求表
CustNo CustName CustPay
A01 移动 25000
A02 联通 0
A03 电信 40000
5.写一个存储过程,获取传出值。
6.x=30,y=40,不使用变量交换值。
7.”日期和事件"启动、关闭。