面试随笔ss

等闲了再来梳理

=====================

触发器

deleted 与inserted 数据的差异 
Inserted 
存放进行insert和update 操作后的数据 
Deleted 
存放进行delete 和update操作前的数据 
注意:update 操作相当于先进行delete 再进行insert ,所以在进行update操作时,修改前的数据拷贝一条到deleted 表中,修改后 
的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中

===============

先说2个机试题吧

1.用net读取文本文件然后插入到数据库中

2.做一个登陆功能 登陆的时候检测用户名只能为数字和字母组成

都很简单

我都用三层架构实现的  dbhelper、DAL、bll、model、web

有一点陌生

第一个是 读取web.config中的字符串  这个有个过时的不能用  新的要手动引用System.Configuration.dll

string s = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;

或者没有web.config这样写:

server=.;database=test;uid=sa;pwd=sa;(这个好记一点、单词拼写简单一点)

或者

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;


****因为我去面试没有网络也没带U盘 所以代码 都没有***

补充:下边的方法也可以更方便 更好记
SqlConnectionStringBuilder 在命名空间
using System.Data.SqlClient 里
 SqlConnectionStringBuilder c = new SqlConnectionStringBuilder();
            c.DataSource = ".";
            c.InitialCatalog = "test";
            c.UserID = "sa";
            c.Password = "sa";

 关于ADO、事务等的资料:这里

==============================================================

1.net的运行机制

首先用C#,VB.net编写代码--->然后再编译为程序集(.exe、.dll[MSIL]、元信息[数据信息]、可选资源[图片、声音])---->程序集再通过JIT编译 (Just-In-Time 仅在需要时才编译MSIL)为机器代码---->最后通过托管CLR运行机器代码。

netframework包括:clr 公共语言运行时和 fcl 统一类库集

2.反射

反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中dll。exe等里边的每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。

3.委托和事件

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

定义委托:

public delegate void GreetingDelegate(string name);

Event出场了,它封装了委托类型的变量,使得:在类的内部,不管你声明它是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符与你在声明事件时使用的访问符相同。

声明事件:   

 public event GreetingDelegate MakeGreet;


什么情况下用委托:

1多线程编程中往往使用委托做异步调用

2委托、事件与Observer设计模式 发布-订阅

3从设计模式上讲,委托跟接口类似,接口利用组件来扩展,委托直接用一个函数起到组件的作用。

GOF对它进行了抽象,称为Observer设计模式:Observer设计模式是为了定义对象间的一种一对多的依赖关系,以便于当一个对象的状态改变时,其他依赖于它的对象会被自动告知并更新。Observer模式是一种松耦合的设计模式。

来自:http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html

SQL

1.问题1
a表
id name
1 xiaosan
2 xiaosi
b表
id name sex
1 xiaowu boy
2 xiaoliu boy  
3 xiaoqi girl

语句select * from a,b查询出来几条记录
这个查出来是六条 为什么呢??

 

答案:

select * from t1,t2
等于

select * from t1 cross join t2

 CROSS JOIN又称为笛卡尔乘积,实际上是把两个表乘起来。 http://www.cnblogs.com/chenxizhang/archive/2008/11/10/1330325.html

2.

问题2
表A
id com
1 50
2 60
1 30
1 40
2 80
表B
id price
1 null
2 null

怎么把表A中的数据根据id分组后求出com的和 然后插入到表B对应的id的price里边

比如id为1的com和胃50+30+40=120
那么表B id为1的price就为120
id为2的同理...

http://topic.csdn.net/u/20120526/11/b1733464-0aac-4d43-acf0-aa5dce6fff03.html?seed=620799569&r=78683988#r_78683988

答案:

update t2 set price=s from t2,(select id,sum(com) s from t1 groupby id)tmp where t2.id=tmp.id

 

原文地址:https://www.cnblogs.com/0banana0/p/2537379.html