差不多一个来月,总算是能为国家做贡献了(听说只要你有工资,你就为国家做贡献了,无论工作多少)。趁现在工作不忙,总结下面试之路。
先说说面试题吧(由于面试的公司顺序记不清了,题目的顺序也有点乱,有些还没写答案呢,后期补上)。
1.所有可序列化的类都被标记为Serializable 2.internal修饰符:只有在同一程序集的文件中,内部类型或成员才是可访问的 3.1 remoting与webservice : remoting 是MarshByReference的,可以传变量的引用,直接对服务器对象操作。速度快,适合intranet(企业内部互联网)。webservice 是MarshByValue的,必须传对象的值。速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。
3.2一般来说,remoting是和平台相关的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用SOAP协议
4.存储过程的优缺点:
优:不用经常的去链接关闭数据,对数据库的访问效率高。一般数据库不出问题,存储过程返回的数据集也没什么问题。存储过程只编译一次,之后都不用编译了,效率高,提高代码的安全性,防止Sql注入;
缺:修改麻烦(参数要到程序里修改,取值等);可移植性差;维护困难(逻辑复杂的话,跟踪就很不方便了);
(牛人博客解答:http://blog.csdn.net/jackmacro/article/details/5688687,多谢啦)
5.ASP.NET的页面生命周期:(这个当时是面试前背诵的,网上比较多,有空亲自体验下)
6.页面传值有几种方式,说说他们的特点:
1)QueryString:Response.Redirect( "target.aspx?param1=x||param2=y ")
接收页面: string strPar1 = Request.QueryString["param1"]; string strPar2 = Request.QueryString["param2];
2)Cookie:存放在客户端(大小4KB 限制)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取:string name= Request.Cookie["name"].Value.ToString();
3)Session:服务端存储
设置Session: Session["name"] ="x";
获取Session: string name = Session["x"].ToString();
4).application(服务端,服务重启,数据清除,曾用他保存访客数量呢)
设置Application : Application["X"] = ="hello";
获取Application : string name = Application["X"].ToString();
5)Server.Transfer:(这个具体没用过,得查查,好像是页面引流的那种跳转)
7.判断IP地址:
1 static bool IsIP(string str) 2 { 3 if (str.ToString() == "") 4 return false; 5 string[] strIp = str.Split('.'); 6 string strIp1 = strIp[0]; 7 string strIp2 = strIp[1]; 8 string strIp3 = strIp[2]; 9 string strIp4 = strIp[3]; 10 int intIp1,intIp2,intIp3,intIp4; 11 //判断是否为空 12 if (strIp1 != "" && strIp2 != "" && strIp3 != "" && strIp4 != "") 13 { 14 //判断是否为整数 15 if (int.TryParse(strIp1, out intIp1) == true && int.TryParse(strIp2, out intIp2) == true && int.TryParse(strIp3, out intIp3) == true 16 && int.TryParse(strIp4, out intIp4) == true) 17 { 18 //判断是否在IP范围 19 intIp1 = Convert.ToInt32(strIp1); 20 intIp2 = Convert.ToInt32(strIp2); 21 intIp3 = Convert.ToInt32(strIp3); 22 intIp4 = Convert.ToInt32(strIp4); 23 if ((intIp1 >= 0) && (intIp1 <= 255) && (intIp2 >= 0) && (intIp2 <= 255) 24 && (intIp3 <= 255) && (intIp3 >= 0) && (intIp4 >= 0) && (intIp4 <= 255)) 25 { 26 Console.WriteLine("the str is ip"); 27 return true; 28 } 29 else 30 return false; 31 } 32 else 33 return false; 34 } 35 else 36 { 37 Console.WriteLine("the str is not ip"); 38 return false; 39 } 40 }
8.一张表只有一列,数值型,不使用任何聚合函数,找出最大的:
SELECT * FROM TABLE WHERE COL NOT IN ( SELECT A.* FROM TABLE A ,TABLE B WHERE A.COL<B.COL )
9)10!有几个0:
只有5 与偶数相乘和10 会产生0,10又可以分为5*2,偶数又可以拆分为2*n,归根还是有几个5的问题。(稍微简单点)
10)有一个长度为100的int数组,找出出现次数最多的成员和计算出现的次数。(这题当时画了半天没写出来,后面跟他说了下思路,不过他说你这个“下下策”)
11)写一个前后台数据交互的js:
我当时是这么写的(之前做一个网站也是这么做的)
function myData(){
var obj=jsonData();
$.ajax({
type:'post',
url:'ajax.aspx',
data:jsonData(),
dataType:'json',
beforeSend:beforecall,
success:success
});
11)“WCF做过么?”,“没有。。。”,“那HTML5呢?”,“还算熟悉,看了些相关的书,也用H5的一些新标签敲了几个页面”,“存储过程做过优化么?”,“之前写的存储过程和游标之类的SQL语句都比较简单,没做过优化,有时候也抓取存储过程的执行参数跟踪过存储过程异常”,“PHP咋样?”,“用PHP 写过些web service,基础的还算了解吧,具体的项目倒是没有”,“linq知道是啥么?”,“linq基本的语法会用,主要是一些拉姆达表达式,有点像把SQL 语句倒过来,先 from
然后 where 最后 selec。这些表达式还带有一些方法,排序,存在,以什么开头与结尾等”……
12)离职原因(不要太过于吐槽上家公司,不然他会觉得你也会吐槽他的公司。)
13)职业规划(一些职业方向)
14)该谈钱了!
面试题有些记不太清,有印象的就这些,先记下,有些有空的时候琢磨下补上。
总结:要走一条线,.NET很多都是做软件用的,尤其是企业和政府使用的软件,这些都技术上的要求都稍微低点,内部使用,毕竟用户数量也就那些人,当然薪水也很少,而且一般的公司上涨的幅度也就是当前的5%-10%左右,所以要涨钱,还是得去一些上市公司或者互联网公司,。
职业要求也比较高:javascript要掌握到至少中级水平,jQuery库要很熟悉,三种数据库(SQL SERVER 2008,ORACLE,MYSQL)至少要一种,WCF 或者WEBSERVICE 服务熟悉一种,PHP,HTML5,CSS3,C# 都要掌握(泛型,委托,linq等等),ASP.NET MVC 网站开发经验。要是还熟悉Android,或者WPF等等,那就不是一个等级的待遇了。
一位面试官的补刀:靠拖控件你说能拖多少钱?