研究面试题

  准备辞职了,但自己的能力大公司进不去,小公司的面试又千篇一律,所以决定在网上找些面试题做做,而NHiberna则学习进度可能会变慢。

  以下题目最好在心里想下解答在看答案,不然没意义了,程序题都有在VS中编写过。

  

  1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换
  思考:一般换值我们都是用第三方变量辅助的,但不能用第三方变量怎么办,先不管行不行,这个时候第一时间应该想到的是数学算法,而且最好A中有B,B中有A。

  解答:

            int a = 10;
            
int b = 15;
            a 
= a + b;//25
            b = a - b;//25-15=10
            = a - b;  //15

 

 

    2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组
    思考:快速排序我不知道,竟然是研究面试题,那就研究吧。

    研究:http://www.cnblogs.com/neekey/admin/EditPosts.aspx?opt=1

    解答:有了上面链接就不需要了吧。

 

    3:什么是多态

    思考:面向对象三要素之一,主要由基类虚方法子类重写来实现。

    解答:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数型方法来实现。
            在面向对象的系统中,多态性是一个非常重要的概念,它允许客户对一个对象进行操作,由对象来完成一系列的动作,具体实现哪个动作、如何实现由系统负责解释。


    4:您在什么情况下会用到虚方法?它与接口有什么不同?

    思考:感觉完全是两个不同的概念,不知道为什么会问答这上面去。

    解答:接口和虚方法都是多态性的应用。如果基类中某个方法声明了虚方法,派生类不一定要有这个方法,但是有的话必须OVERRIDE才能实现多态性

            接口可以被多继承,并且派生类必须实现接口的所有方法,属性

 

2010-5-11 END

 

  5:编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

  思考:这个题目很多人应该都看到过,解决方法应该是foreach(Control c in this.Controls) if(typeof(c)==typeof(TextBox))....,但是这样可以变量嵌套的页面吗?

  解答:

 

  1. 传入page的this.Colletions
  2. 对每一个contorl,如果contorl没有包含子control,进行处理。
  3. 如果包含,递归调用这个函数处理子control

 

  

代码
private void InitialControl(ControlCollection objControlCollection)
    {
        
foreach (System.Web.UI.Control objControl in objControlCollection)
        {
            
if (objControl.HasControls())
            {
                InitialControl(objControl.Controls);
            }
            
else
            {
                
if (objControl is System.Web.UI.WebControls.TextBox)
                {
                    ((TextBox)objControl).Text 
= String.Empty;
                }
            }
        }
    } 

 

   6:费波那其数列,1,1,2,3,5……编写程序求第十项。

   思考:这题大家也做过吧,就是递归,但是能不能用高中数学的通项公式呢?有时间的试试吧,这里用递归。【{[(1+√5)/2]^n-[(1-√5)/2]^n}/√5】

   解答:

  

代码
        static void Main(string[] args)
        {
            
//费波那其数列,1,1,2,3,5……编写程序求第十项
            Console.WriteLine("输入数字!");
            Console.WriteLine(Fun(
int.Parse(Console.ReadLine())));
            Console.ReadLine();
        }

        
static int Fun(int num)
        {
            
switch (num)
            {
                
case 1:
                    
return 1;
                
case 2:
                    
return 1;
                
default:
                    
return Fun(num - 2+ Fun(num-1);
            }
        }

 

 

  7:几种页面之间的传值方法
  思考:这道题很简单,但是我原来面试没打出来,不是不会,关键字忘了。。。

  解答:1.Session 2.Querystring(传参)3.Server.Transfer  4.Cookies 5.Application 6.Response.Redirect() 这个。。应该算页面跳转吧

 

  8:服务器端Codebehind方式时,如何注册前端javascript脚本,用什么对象的方法

  思考:这个很常用吧,不过笔试不知道能不能写出全称来。

  解答:ClientScript.RegisterStartupScript

  完整的:ScriptManager.RegisterStartupScript (this.GetType(), "", "<script>alert('信息!');location='PersonSchedule.aspx'</script>", false);

    ClientScript.RegisterClientScriptBlock 这种控件全部会消失,只有提示框,类似遮罩。

  完整的:ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>alert('信息!');location='PersonSchedule.aspx'</script>", false);

 

  2010-05-12 AM END

 

  9:ASP.NET 页生命周期

  思考:这个真不知道。

  解答:

  

阶段 说明

页请求

页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。

开始

在开始阶段,将设置页属性,如 RequestResponse。在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。

页初始化

页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

加载

加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。

验证

在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。

回发事件处理

如果请求是回发请求,则将调用所有事件处理程序。

呈现

在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 中。

卸载

完全呈现页并已将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性(如 ResponseRequest)并执行清理。

恩 自己默写遍:页请求——开始——页初始化——加载——验证——会发事件处理——呈现——卸载

 

  10:写一个实现对一段字符串翻转的方法

  思考:不用多说了,第一时间想到数组。

  解答:

代码
            string inputStr = "a,b,c,d,e,f,g,h,i,j,k,l";
            
char[] inputChar = inputStr.ToCharArray();
            
int count = inputChar.Length;
            StringBuilder sb 
= new StringBuilder();
            
for (int m = count - 1; m >= 0; m--)
            {
                sb.Append(inputChar[m]);
            }
            Console.Write(sb.ToString());

 

 

  11:关于一个纸杯的测试用例设计

  思考:貌似这个是测试人员的题目,但考虑到一些BT小公司的面试题,还是写上了。我不是专人,但我觉得考虑到每一个可能出现的错误就行。

  解答:

  一 需求:

  测试一个带广告图案的花纸杯

  二 相关背景:

  1.杯子特性:

  (1)杯子的容量: 能装多少升水,空杯,半杯,满杯

  (2)杯子的型状: 圆型,上面口大,下面小。

  (3)杯子的材料: 纸杯

  (4)杯子的抗摔能力: 风吹是否会倒,摔一次是否会摔坏,摔多次是否会摔坏

  (5)杯子的耐温性: 装冷水,冰水,热水

  2.广告图案:

  (1)广告内容与图案碰水是否会掉色

  (2)广告内容与图案是否合法

  (3)广告内容与图案是否容易剥落

  三 影响范围:

  1.可用性:

  (1)装入液体多久后会漏水

  (2)装入热水多久后可以变温,装入冰水多久后可以融化

  2.安全性:

  (1)装入不同液体,是否会有化学反应。比如:可乐,咖啡等饮料

  (2)装入热水杯子是不是会变型和异味

  3.性能:

  (1)不同人群是否能适合杯子的型状,包括握杯的感觉和喝水的感觉

  (2)不同人群是否能接受杯子的广告内容与图案

  2010-5-12 END

posted on 2010-05-11 17:50  neekey  阅读(449)  评论(2)    收藏  举报

导航