总结面试之路--2014.9.19_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 总结面试之路--2014.9.19

总结面试之路--2014.9.19

 2014/9/20 13:12:02  来杯咖啡  程序员俱乐部  我要评论(0)
  • 摘要:差不多一个来月,总算是能为国家做贡献了(听说只要你有工资,你就为国家做贡献了,无论工作多少)。趁现在工作不忙,总结下面试之路。先说说面试题吧(由于面试的公司顺序记不清了,题目的顺序也有点乱,有些还没写答案呢,后期补上)。1.所有可序列化的类都被标记为Serializable2.internal修饰符:只有在同一程序集的文件中,内部类型或成员才是可访问的3.1remoting与webservice:remoting是MarshByReference的,可以传变量的引用,直接对服务器对象操作
  • 标签:总结 面试

  差不多一个来月,总算是能为国家做贡献了(听说只要你有工资,你就为国家做贡献了,无论工作多少)。趁现在工作不忙,总结下面试之路。

  先说说面试题吧(由于面试的公司顺序记不清了,题目的顺序也有点乱,有些还没写答案呢,后期补上)。

  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等等,那就不是一个等级的待遇了。

  一位面试官的补刀:靠拖控件你说能拖多少钱?

发表评论
用户名: 匿名