由几道面试题谈到的计算机技术闲话

[转]

下面是我们今天在网上闲聊的一些 由几道面试题谈到的计算机技术闲话,文中的名字不是真名,请勿对号入座。


zp. 2009-07-02 12:11:51
1、    RadioButton 如何构成一组的形式?
2、    为使界面布局可以随窗体大小调整而调整,控件如何定位?
3、    窗体间传值有哪几种方式?
4、    窗体的Load事件与Page的Load事件有什么区别?
5、    请简单写一个使用进程条的例子,要求:在耗时大的处理中使用进度条,注意界面的刷新.
zp. 2009-07-02 12:12:01
看看我出的winform试题,咋样,呵呵
zp. 2009-07-02 12:37:56
看看还有什么建议没,再帮出几道?呵呵
dash 2009-07-02 13:03:38
给一个Doc格式的吧
dash 2009-07-02 13:04:31
有点难啊,如果不上机,我考不及格
M. 2009-07-02 13:04:47
 
dash 2009-07-02 13:05:49
所以我觉得重要的是方法 ,用怎么样的方法去解决问题 。比如第一题,我找找控件的属性,就OK了。
M. 2009-07-02 13:08:59
是不是老掉线
dash 2009-07-02 13:09:12
没有啊
M. 2009-07-02 13:10:00
我这老掉,慢死了
dash 2009-07-02 13:10:19
把无线网禁用
M. 2009-07-02 13:10:43
已经禁用了
zp. 2009-07-02 13:29:25
大师有什么建议这样的题,出两道,呵呵


dash 2009-07-02 13:34:35
别人考我的:怎么把数据库的字段名附加在不同的 WinForm控件上面?比如Lable,CheckBox.这样做有啥好处?
dash 2009-07-02 13:35:35
怎么取得窗体上面的所有TextBox控件的ID?这些TextBox控件可能在不同的容器控件里面。
zp. 2009-07-02 13:37:21
 
zp. 2009-07-02 13:37:24
有点难啊,如果不上机,我考不及格
dash 2009-07-02 13:38:55
第一道题,不用上机,写在控件的tag属性就OK,第2道题,就是遍历控件而已,不超过 10行代码,完全可以手写。
dash 2009-07-02 13:48:37
List<string> IDList=new List<string>();

void FindMyCtr(Control ctr)
{
  if(ctr.HasControls())
  {
    foreach(Control ctr1  in ctr.Controls)
      FindMyCtr(ctr1);
  }
  else
  {
    if (ctr is TextBox)
       IDList.Add(ctr.Name);
   }
}
zp. 2009-07-02 13:49:40
呵呵,我觉得你的题比我的难的多
dash 2009-07-02 14:03:48
不难,很基础啊,没有讲具体控件的应用呢
dash 2009-07-02 14:05:09
你要是出一道怎么设置 控件的背景属性,我手写还真不会。
dash 2009-07-02 14:05:48
我的题目主要考的是方法 ,解决问题的方法和思路
zp. 2009-07-02 14:06:44
好,我把题都加上,都发给杜胜
dash 2009-07-02 14:19:33
List<string> IDList=new List<string>();

void FindMyCtr(ControlCollection ctrs)
{
  foreach(Control ctr in ctrs)
  {
      if (ctr is TextBox)
               IDList.Add(ctr.Name);
      if(ctr.HasControls())
           FindMyCtr(ctr.Controls);
  }
}

void Form1_Load()
{
    FindMyCtr(this.Controls);
}
dash 2009-07-02 14:19:54
刚才手写的,正确答案是这个
zp. 2009-07-02 14:26:09
哈,你还自己验证了一下?
dash 2009-07-02 14:28:07
没有验证,记得以前写过 类似的,From 不是Control,所以有点特殊 ,所以只能传Form.Controls,不能直接传 this
dash 2009-07-02 14:30:03
下次我要是考人,让他上机写JS代码,会写JS,基本上也会写C#了 。有IDE大家都懒了,不想去思考
zp. 2009-07-02 14:30:52
 
zp. 2009-07-02 14:31:07
你别考我,考我该交白卷了。。。。
drj. 2009-07-02 14:31:58
我就会history.go(-1)
drj. 2009-07-02 14:32:07
 
zp. 2009-07-02 14:32:35
那就挺牛B的了,我就会alert("Hello World!");
M. 2009-07-02 14:32:55
你们都挺牛逼的
M. 2009-07-02 14:33:03
我都不会
zp. 2009-07-02 14:33:31
不过说实话,让我手动自己写form表单,我还真就不会写,呵呵
dash 2009-07-02 14:35:35
其实,明白Form的工作原来就行了,考试没有必要考具体控件的使用 。具体控件学学,最多1天就会了。
M. 2009-07-02 14:36:12
考zp.那个dx
M. 2009-07-02 14:36:21
1天可会不了
dash 2009-07-02 14:36:23
也许你靠我具体某一个控件怎么样,我就挂了呢,但你能够说我不会做WinForm程序?
dash 2009-07-02 14:36:54
考基本的,呵呵,其它慢慢学
zp. 2009-07-02 14:37:12
说一千到一万,说白了就一句话
zp. 2009-07-02 14:37:17
别看广告,看聊效
dash 2009-07-02 14:37:59
考大家一个问题,单击一个按钮,最先执行那个事件?
dash 2009-07-02 14:38:24
考大家一个问题,单击一个按钮,最先执行那个事件?
drj. 2009-07-02 14:38:33
pageload吧
drj. 2009-07-02 14:38:42
web的
dash 2009-07-02 14:38:49
WinForm 的
M. 2009-07-02 14:39:02
太高深了
M. 2009-07-02 14:39:03
哈哈
drj. 2009-07-02 14:39:06
 
zp. 2009-07-02 14:39:27
这题太难


zp. 2009-07-02 14:39:50
protected override void WndProc(ref System.Windows.Forms.Message e)
zp. 2009-07-02 14:39:53
这个?
dash 2009-07-02 14:40:18
WndProc ,强悍
dash 2009-07-02 14:41:35
WebForm 的按钮会首先执行服务器端的Page_Load 事件,但是 WinFrom 却不会先执行Form_Load 事件
dash 2009-07-02 14:42:23
这是WebForm和WinForm的重大区别
zp. 2009-07-02 14:42:24
Form_Load 只会执行一次
M. 2009-07-02 14:42:44
但是 WinFrom 却不会先执行Form_Load 事件

是根本就不会执行Form_Load 事件
zp. 2009-07-02 14:42:47
4、    窗体的Load事件与Page(Web)的Load事件有什么区别?
zp. 2009-07-02 14:42:56
我就想问这个,呵呵
dash 2009-07-02 14:43:18
呵呵,这个题目很有深度啊
zhouyanlong(周燕龙) 2009-07-02 14:44:01
大师詊细讲讲
zp. 2009-07-02 14:44:13
深度倒不知道,不过根据我们的经验,这块一般新人容易搞错,呵呵
dash 2009-07-02 14:46:13
Web是基于HTTP协议的,HTTP协议是无状态的,所以每次请求在服务器端都会先创建一个Web窗体,加载Web窗体,也就是执行Page_Load事件,然后再执行服务器按钮事件。
WinForm却完全不同,它的窗体控件是有状态的,其生命周期从窗体控件初始化到最后销毁。所以,WinForm窗体只需要加载一次 Load事件。
zp. 2009-07-02 14:46:54
。。。这就是深度。。。。
zp. 2009-07-02 14:47:02
我只知道表象,呵呵
drj. 2009-07-02 14:47:06
 
dash 2009-07-02 14:47:28
而WinForm控件的事件,内部是基于Windows消息机制
drj. 2009-07-02 14:47:29
让大师出几道有深度的题吧
dash 2009-07-02 14:48:03
Windows消息机制是基于消息队列,这跟委托不同。
dash 2009-07-02 14:49:04
zp.再出一道题:按钮事件是靠委托实现的吗?


zp. 2009-07-02 14:50:37
是吧
dash 2009-07-02 14:51:03
委托的内部机制是函数指针,这跟windows消息不是一回事。
zp. 2009-07-02 14:55:23
哦!
dash 2009-07-02 14:56:55
[STAThread]
static void Main(string [] args)
{

}

static void Main(string [] args)
{

}
有啥不同?下面的方式用在那种程序中?
zp. 2009-07-02 14:58:05
[STAThread]这块不同
dash 2009-07-02 14:59:48
哈哈,这不是考视力啊
zp. 2009-07-02 14:59:50
不知道干什么用的,好像就是单线程
zp. 2009-07-02 15:00:08
有这个声明就是单线程的应用程序吧
dash 2009-07-02 15:00:38
那为啥在WindForm里面都这样写呢?
dash 2009-07-02 15:01:14
而在控制台程序里面往往不比加这个特性?
zp. 2009-07-02 15:01:38
。。。。深度。。。。
zp. 2009-07-02 15:01:44
大师讲讲吧
dash 2009-07-02 15:03:03
[STAThread] 是为程序里面可能调用COM组件而使用的,比如如果我们的程序调用了IEBrowser控件,没有写这个特性,程序一运行就会报错。
dash 2009-07-02 15:04:37
COM 线程模型可设置为单线程单元或多线程单元,一般来说,很多支持COM开发的语言开发的COM组件都只支持单线程单元,C++程序必须特殊处理才可以让COM组件支持多线程单元。
dash 2009-07-02 15:06:18
使用 [STAThread] 特性,就可以保证程序在使用COM组件的时候,使用单线程单元,也就是COM组件与WinForm主程序使用同一个线程,从而避免COM调用出现问题。
zp. 2009-07-02 15:07:43
这跟打开几个form程序有关吗?
dash 2009-07-02 15:09:21
无关
dash 2009-07-02 15:09:34
线程在进程里面
zp. 2009-07-02 15:10:11
那一个程序使用多个IEBrowser控件可以吗?
dash 2009-07-02 15:11:13
可以啊


dash 2009-07-02 15:11:36
每一个 IEBrowser 都是一个实例对象
dash 2009-07-02 15:11:54
线程跟对象的数量没有必然关系
zp. 2009-07-02 15:12:24
那就是说在线程中不能访问IEBrowser控件了
dash 2009-07-02 15:12:52
你可以认为线程就是进程内部的资源,它代表CPU时间片和内存地址。
dash 2009-07-02 15:13:08
可以,但要特殊处理。
dash 2009-07-02 15:13:39
要“封送消息”给IEBrowser
zp. 2009-07-02 15:13:53
Control.CheckForIllegalCrossThreadCalls = false;
zp. 2009-07-02 15:13:55
这个?
zp. 2009-07-02 15:14:15
我看你的注释是解决线程中访问控件的问题
dash 2009-07-02 15:15:40
这个不是我写的啊
dash 2009-07-02 15:15:53
还是抄你们的
zp. 2009-07-02 15:16:03
 
dash 2009-07-02 15:18:24
在来一道前沿的题:双核和多核处理器对编程语言与编程方式有啥影响?微软为啥要推出F#?
M. 2009-07-02 15:19:36
为了挣钱
dash 2009-07-02 15:20:06
哈哈,商业社会任何事情都是为了挣钱,这个没错。
zp. 2009-07-02 15:20:20
微软要推出F#,是为了双核和多核处理器对编程语言与编程方式的影响
zp. 2009-07-02 15:20:22
哈哈
dash 2009-07-02 15:20:48
哈哈,有道理。
dash 2009-07-02 15:22:28
双核和多核处理器的推出使真正的多线程运用成为了可能,现在的多线程都是假的,没有从实质上提高程序的计算效率。
zp. 2009-07-02 15:23:21
那双核与多核与真的双CPU与多CPU有什么区别呢?


dash 2009-07-02 15:23:25
在单核处理器上运行的多线程程序,都是假的多线程,因为它们必须等待,排队
dash 2009-07-02 15:25:16
双核指的是在一块CPU芯片里面集成2个计算核心
dash 2009-07-02 15:26:03
从成本上来说,这样做比使用2个CPU更合算。
dash 2009-07-02 15:26:45
但是公用一套高速缓存,效率有所影响
zp. 2009-07-02 15:26:48
那他们就真的可以完全相同吗?(除了物理结构上)
zp. 2009-07-02 15:27:31
呵呵,看来两个人和有两颗心的一个人还是有很大不同的,哈哈
dash 2009-07-02 15:27:43
那当然
dash 2009-07-02 15:28:30
硬件问题不说了,回归正题,对编程语言和编程方式有啥影响?
zp. 2009-07-02 15:30:26
就是大量使用线程?
dash 2009-07-02 15:30:56
可是,现在我们也大量使用线程啊?
zp. 2009-07-02 15:31:44
那就再大量一点吗?呵呵
dash 2009-07-02 15:34:16
一个线程使用一个CPU时间片,但一个线程还不是一个最基本的编程单元,对多核的利用效率不高。
dash 2009-07-02 15:34:53
如果不同的函数同时在不同的CPU上执行,这样效率是不是更高点?
dash 2009-07-02 15:36:43
现在的编程语言,必须依靠程序主动申请线程,才可以开启多线程。
dash 2009-07-02 15:39:06
而如果有另外一种编程语言,天然的,可以将自己的计算单元同时放到不同的CPU核心上面去,实现“并行计算”,那么这种语言开发的程序就具有相当的优势。
dash 2009-07-02 15:41:50
答案就是--“函数式语言”!
zp. 2009-07-02 15:45:34
WCF?
dash 2009-07-02 15:46:43
现在的计算机都是基于“冯-诺依曼”计算机体系结构,采用线性计算方式,而多核的推出,可能推动计算及朝“并行计算”体系迁移。
dash 2009-07-02 15:47:34
微软对此非常有远见,所以在两年前就推出了F#,函数式语言。
dash 2009-07-02 15:48:06
我们现在的.NET,是微软10年推出的战略。


zp. 2009-07-02 15:49:11
F#是一种什么样的语言呢?语法是什么样的?
dash 2009-07-02 15:49:51
呵呵,我还没有怎么研究过,大家还是百度一下。
dash 2009-07-02 15:50:32
不过js可以写出很好的函数式风格的代码。
zp. 2009-07-02 15:51:01
大家换语言吧,都换那样可以适应多核的语言吧
dash 2009-07-02 15:54:59
等我们都配了多核CPU再说吧,呵呵
zp. 2009-07-02 15:55:36
现在配的机器基本都是双核的了,现在想找单核的新的都找不到了,找到的全是二手的
dash 2009-07-02 15:56:08
另外现在的操作系统对多核的支持还不是很好,我们真正用上多核开发语言,为时尚早。
zp. 2009-07-02 15:57:57
可是硬件已经普及了,软件也应该不远了吧
dash 2009-07-02 16:08:57
是啊,一般都是软件落后于硬件



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值