zoukankan      html  css  js  c++  java
  • 转:C#程序员面试(一)答案

    C#程序员面试(一)答案

    文章发表: xianfengsoft

    发表日期: 2004-07-30

    阅读次数: 274


    前提:状态栏面板sbpFilePath已经设定为自绘样式.当有如下代码段1被执行一次以后:

    代码段1:

    private void treeviewArchives_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 

    if (e.Node.Text!= "" ) 

    try 
    {this.richtexebox.LoadFile(Application.StartupPath+e.Node.Text); 
    statusMessages
    =e.Node.Text; 
    sbpFilePath.Text
    =statusMessages;//statusMessages表示字符串 
    }
     
    catch 
    {MessageBox.Show("加载文件出错,无法显示!"); 
    }
     
    }
     
    }
     

    代码段2:

    private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent) 
    {// 绘制面板区域 
     sbdevent.Graphics.FillRectangle(Brushes.Green, sbdevent.Bounds); 
     
    //绘制面板上的文本 
     sbdevent.Graphics.DrawString(statusMessages,sbdevent.Font,Brushes.White,sbdevent.Bounds); 
     sbdevent.Graphics.Dispose(); 
    }
     

    考试题:

    1、代码段2会不会被执行?
    答案:会。

    2、代码段2如果不会被执行,为什么?该如何修改?
    答案:过。继续下一问题。

    3、代码段2如果会得到执行,会不会被重复执行(即连续执行两次或更多次)?
    答案:会。

    4、代码段2如果被重复执行,该如何修改使之只运行一次就足够?
    答案:代码段1可以修改为:

    private void treeviewArchives_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 

     
    if (e.Node.Text!= "" ) 

     
    try 

     
    this.richtexebox.LoadFile(Application.StartupPath+e.Node.Text); 
     statusMessages
    =e.Node.Text; 
     
    //将以下这一句注释掉,同时加上强制绘制的方法 
     
    //sbpFilePath.Text=statusMessages;//statusMessages表示字符串 
     statusBar1.Invalidate(); 
    }
     
     
    catch 
    { MessageBox.Show("加载文件出错,无法显示!"); 
    }
     
     }
     
    }
     

    5、代码段2中 sbdevent.Graphics.Dispose();//这个语句是否可有可无,为什么?
    答案:为尽可能释放资源,只要编译与运行过程中不出错,应当加上。
    (如现场有争议,留下名单,让他回去测试,第二天带测试报告再来)


    6、假设运行以下语句
    {sbpFilePath.Text=statusMessages;sbpFilePath.Text=statusMessages;}
    问题同上述1-3项,请再次回答。
    答案:如果不修改代码段1,此语句段在第一次运行
    sbpFilePath.Text=statusMessages;
    时,代码段2就被运行两次,此后,只要给sbpFilePath.Text的值不变,
    即statusMessages的值不变,则代码段2不会继续运行。
    即:
    {sbpFilePath.Text=statusMessages;sbpFilePath.Text=statusMessages;}
    等效于
    sbpFilePath.Text=statusMessages;

    7、您认为代码段1或者代码段2有没有错误?(如果您认为回答对了上面的问题,此问题可不必做答)
    答案:语法没有错,但可以修改代码,减少重绘,节省资源。

    8、有人认为C#开发出来的程序太慢,你怎么看待这个问题?你在编码过程中优先考虑以人为本、用户为上的思想吗?
    请简述。
    答案:一部分是实情,另外一部分在于很多人完全依赖自动垃圾回收,而没有考虑弱引用、Dispose()、Close()、
    GC、等等,甚至有很多人忌讳try-catch-finally,导致夸大问题,C#开发的实质问题在于目前的跨平台方面。
    公司研发部认为:如果JAVA开发人员认为C#开发出来的程序太慢,肯定不是一个合格的JAVA程序员,他写的代码肯定
    性能低,耗费资源。如果经2次提醒后,他还坚持此观点,肯定是一个浮躁的人,忌用。
    招聘过程中注意:不要试图引导应聘者比较语言的差异,不得发表带偏见性的语言观点,注意应聘者的情绪。

    9、普遍认为以下几本书都是经典,如果你看过,请从里面挑任意一本书,指出该书中5处以上严重影响程序速度的代码段
    或错误代码。(希望通过此题强调我公司的原则:程序员水平如何,是看他写的代码以及代码性能,不是看他学了多少,
    也不看他的工龄)
    答案:
    资料上没有提供。

    我信守承诺,暂时没有在其它网站公布更多题目。
    而且绝对没有公布除此文以外的任何技术问题与答案。
    一旦第3轮招聘结果公布,我将第一时间全部传到网上,
    大家留意。

    很多人都可以指教我,我会很珍惜有人指教的机会......

    愿一路奔跑不退缩,到目前一直从事.Net的B/S,C/S企业应用研发
  • 相关阅读:
    HTTP Header 详解
    nginx负载均衡配置
    Win10安装Oracle11g
    MySQL如何让别人远程连接自己的数据库
    Maven的安装以及配置
    linux上安装jdk,tomcat,mysql
    Centos7上安装docker
    ActiviMQ快速入门
    2018年上海后半年JAVA软件工程师面试真题
    Docker安装MySQL、Redis、Tomcat
  • 原文地址:https://www.cnblogs.com/syveen/p/95906.html
Copyright © 2011-2022 走看看