1.请写出以下JS运行后alert出变量i的值
var i = 1;
$.ajax({
type: "POST",
contentType: "application/json",
dataType: "json",
url: "submit_json.ashx?action=Text",
data: {},
async: false,
success: function (e) {
i = i + 1;
},
error: function (e) {
alert("ajax异常!");
}
});
alert(i);
答案:2
2.在C#中,string str=null与string str="",请尽量使用文字或图像说明区别.
答案:string str=null是不给他分配内存空间,而string str=""给它分配长度为空字符串的内存空间。string str=null没有string对象,string str=""有一个字符串对象。
3.分析以下代码,完成填空
string strTmp="abcdef某某某123";
int i = System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j = strTmp.Length;
以上代码执行完后,i=?,j=?
答案:i=16,j=13
4.列举asp.net页面之间传递的几种方式。
答案:1.使用QueryString,如....?id=1;response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
4.Cookie传值
5.post
5.Sql中的UNION和UNION ALL有什么区别?
答:union 将两个表连接后删除其重复的项,union all 将两个表连接都不删除其重复的项。
补充资料:
数据库中,UNION和UNION ALL都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:
select * from users1 union select * from user2
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:
select * from user1 union all select * from user2
6.描述SqlServer中什么是触发器或写一个触发器?
答案:触发器是一种特殊类型的存储过程,当指定表中的数据发生变化时触发器自动生效。它与表紧密相连,可以看做是表定义的一部分。触发器不能通过名称被直接调用,更不允许设置参数。
触发器编写:
--创建记录的日志表
CREATE TABLE [dbo].[auto_solid_log](
[dictateid] [bigint] NOT NULL,
[Mode] [char](1) NOT NULL,
[Add_Start] [char](8) NOT NULL,
[Add_End] [char](8) NOT NULL,
[Status] [char](1) NOT NULL,
[ErrCode] [char](2) NOT NULL,
[time_Start] [datetime] NOT NULL,
[time_End] [datetime] NULL,
[SalverNumber] [char](10) NOT NULL
)
GO
--记录操作的触发器
create trigger t_one on dbo.auto_solid
for insert,DELETE,UPDATE
as
insert into auto_solid_log(dictateid,Mode,Add_Start,Add_End,Status,ErrCode,time_Start,SalverNumber) select dictateid,Mode,Add_Start,Add_End,Status,ErrCode,time_Start,SalverNumber from dbo.auto_solid
go
--显示记录情况
select * from auto_solid_log
go
--删除演示环境
drop table auto_solid_log
drop trigger t_one
select name from sysobjects where xtype='TR' --所有触发器
select name from sysobjects where xtype='P' --所有存储过程
select name from sysobjects where xtype='V' --所有视图
select name from sysobjects where xtype='U' --所有表
7.一组数字是1-80,在此数组中随机抽取10个不能重复的数字,这10个数字相加的和在250~300之间,请写一个程序抽取这10个随机数字.提供以下代码:
Random objRand=new Random();
objRand.Next(int minValue,int maxValue);
答案:
public static string RandomnNumber()
{
Random objRand = new Random();
List
string strsum = "";
int sums = 0;
while (String.IsNullOrEmpty(strsum))
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
int num;
num = objRand.Next(1, 81);
int id = Array.IndexOf(nums.ToArray(), num);
while (id != -1)
{
num = objRand.Next(1, 81);
id = Array.IndexOf(nums.ToArray(), num);
}
nums.Add(num);
if (nums.Count == 10)
{
foreach (var item in nums)
{
sum += item;
}
if (250 < sum && sum < 300)
{
foreach (var item in nums)
{
strsum += item + ",";
sums += item;
}
}
else
{
i = 0;
nums = new List
}
}
}
}
return strsum + "和等于:" + sums;
}
8.现有一字符串string str=" asdrewedsfweqsadaaz一二三四五";在不使用系统内置函数str.Length()的前提下编写代码,计算出str字符串的长度。
答案:
protected static string ReadNum()
{
string str = " asdrewedsfweqsadaaz一二三四五";
//内置函数str.Length的长度
if (str.Length == 0)
{
return "0";
}
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
}
return "str的字符串长度为:" + s.Count() + ",str的字节为:" + tempLen.ToString();
}
9.写出一条Sql语句:取出表A中51到70记录(SQLServer以自动增长的ID为主键,注意:ID可能不是连续的,查询语句不止一种,尽可能写出来)。
答案:1.select top 20 * from A where id not in (select top 50 id from A)
2.select top 20 * from A where id >(select max(id) from A where id in (select top 50 id from A))
10.软件开发一般有几个阶段?每个阶段的作用?
答案:需求分析,架构设计,代码编写,QA(测试),部署
11.有三个人去住一家宾馆,三人间的房价是30元,他们每人凑了10元交给老板,老板说那天刚好打折,25元就够了,于是让服务员退5元给那三个人。结果服务员自己贪污了2元,把剩下的3元退给那三个人每人1元。,现在的问题就是:每人交了10元,每人又退了1元,也就是说他们每人付了9元,三个人总共付了9x3=27元,加上服务员贪污的2元,总共才29元,问那1元钱哪去了呢?
答案:30-5+2=3*9,没有多也没有少。
12.web安全中心SQL注入,XSS,CSRF的含义是什么?如何防护?
答案:详情请看点击打开链接
13.请实现一个函数,函数的输入参数为一个整型数组,函数计算出这个数组的偶数序列的次数。并返回该次数。
例1:输入:3,4,2,6,7,9,10 输出:2
原因:一个数列为4,2,6,另一个数列为10
例2:输入:2,23,100,2,200,7,9,11,10,20,30,31 输出:3
原因:一个数列为2,第二个数列为100,2,200,第三个数列10,20,30
答案:
protected static string Num(string temps)
{
//Num("3, 4, 2, 6, 7, 9, 10");
//Num("2,23,100,2,200,7,9,11,10,20,30,31");
string[] temp = temps.Split(',');
int dnum = 0, snum = 0;
int a; int b;
for (int i = 0; i < temp.Length; i++)
{
if (i > 0)
{
a = Convert.ToInt32(temp[i - 1]) % 2;
b = Convert.ToInt32(temp[i]) % 2;
if (a == b && b > 0) { }
else if (a == b && b == 0) { }
else
{
if (b > 0)
{
dnum += 1;
}
else
{
snum += 1;
}
}
}
else
{
b = Convert.ToInt32(temp[i]) % 2;
if (b == 0)
{
snum += 1;
}
else
{
dnum += 1;
}
}
}
return "单数是:" + dnum + ",双数是:" + snum;
}
14.冒泡排序
答案:int[] nums = { 3, 5, 9, 8, 10, 5, 3 };
for (int j = 0; j < nums.Length - 1; j++)
{
for (int i = 0; i < nums.Length - 1 - j; i++)
{
if (nums[i] > nums[i + 1])
{
int temp = nums[i];
nums[i] = nums[i + 1];
nums[i + 1] = temp;
}
}
}
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
15.问1-100的数组(顺序打乱的),随机去掉一个元素,算出那个去掉的元素是什么?
答案:第一种解法:思路,1-100的的数组和等于5050,所以那个去掉的元素的值等于5050-(剩下的元素的和)
//Num("1,2,3,5,...,100");
public void showNum(string sums)
{
string[] a = sums.Split(',');
int sum = 0;
for (int i = 0; i < a.Length; ++i)
{
sum +=Convert.ToInt32(a[i]);
}
int num = 5050 - sum;
}
第二种解法:思路用HashSet
public void Checknum()
{
int[] a = { 1, 3, 2, 5,...,100 };
int[] b = { 1, 2, 3, 4, 5,...,100 };
HashSet
int num = 0;
foreach (int i in b)
{
if (set.Add(i))
{
num = i;
}
}
}
16.读写Cookie缓存源码
//写入Cookies
HttpCookie cookie = new HttpCookie("名称");
cookie.Value = “值”;
cookie.Expires = DateTime.Now.AddDays(7);
//检查Cookies
HttpCookie cookies = Request.Cookies["Username"];
string value= cookies.Value;
17.美达面试题
前端js:
一般处理程序:
MeiDaTextEntities db = new MeiDaTextEntities();
public void ProcessRequest(HttpContext context)
{
string action = context.Request["action"];
switch (action)
{
case "Bind_list": //查询
Bind_list(context);
break;
}
}
#region 查询============================================
private void Bind_list(HttpContext context)
{
string Username = context.Request.Form["Username"];
var list = db.tbUser.Where(x => x.id > 0);
List
//添加数据集合
foreach (var item in list)
{
dynamic dydata = new
{
id = item.id,
Username = item.Username,
};
dylist.Add(dydata);
}
var result = new
{
status = 1,
//数据集合
lists = dylist
};
string json = JsonConvert.SerializeObject(result);
context.Response.Write(json);
}
#endregion
增删改查:
tb_User model = new tb_User();
model.Username = Username;
db.tb_User.Add(model);
db.SaveChanges();
var model = db.tbUser.Where(x => x.id == id).FirstOrDefault();
model.Username = Username;
db.SaveChanges();
var model = db.tbUser.Where(x => x.id == id).FirstOrDefault();
db.tbUser.Remove(model);
db.SaveChanges();
18.Wince中json格式数据的处理
string zutuo =“{"status":1,"list":[{"id":18,"oddnumbers":"RK18091210460001811229","zutuo":"待组托"}]}” ;
JObject jObj = JObject.Parse(zutuo);
JToken status = jObj["status"];
if ((int)status == 1)
{
var obj = jObj["list"];
List
19.截取字符串后几位
string s=str.Substring(0,str.Length-N);
20.TrimEnd()去掉后几位字符
str= str.TrimEnd(new char[] { 'o', 'r' ,......});
21.一个方法中,参数不固定,求他们相乘的值
解析:使用params关键词
int a = Sum(1, 2, 3);
public int Sum(params int[] list)
{
if (list.Length == 1)
{
return list[0];
}
else
{
int sums = 1;
for (int i = 0; i < list.Length; i++)
{
sums *= list[i];
}
return sums;
}
}
22.C# Dictionary的几种遍历方法
Dictionary
list.Add("A", 1);
//3.0以上版本
foreach (var item in list)
{
Console.WriteLine(item.Key + item.Value);
}
//KeyValuePair
foreach (KeyValuePair
{
Console.WriteLine(kv.Key + kv.Value);
}
//通过键的集合取
foreach (string key in list.Keys)
{
Console.WriteLine(key + list[key]);
}
//直接取值
foreach (int val in list.Values)
{
Console.WriteLine(val);
}
//非要采用for的方法也可
List
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(test[i] + list[test[i]]);
}
23.一列数的规则如下: 1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现
int num = Num(30);
public int Num(int number)
{
if (number <= 0)
{
return 0;
}
else if (number > 0 && number <= 2)
{
return 1;
}
else
{
return Num(number - 1) + Num(number - 2);
}
}
24.C# 中ref和out的作用和区别
作用:可以有多个返回值。
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
out : //传递给out定义参数的方法,不需要赋初始值。
//out修饰,必须在退出此方法前为out修饰的变量i赋值。
//导致参数按引用传递,所以目标函数变量会直接被赋予这个数值。
ref : //传递给ref定义参数的方法,必须赋初始值。
//ref修饰,可以修改也可以不改。
//导致参数按引用传递,所以目标函数变量会直接被更改这个数值。