程序员面试宝典

1.   应聘求职

渠道:校招,电子简历

流程:各个公司不同

2.  简历书写

不要太长,一份中文简历压缩在2页左右就可以把所有的内容突出了。

多做几份有针对性的简历,按照对方的要求突出自己相关的经历。

3.  3种考试

笔试:C C++ Java三种  英语看淡智力测试 有的放矢准备简历,了解公司情况

纸上写程序!!!

电话面试:礼貌,认真

面试:

4.  基础知识

指针和句柄的区别和联系是什么?

句柄是一个32位的整数,实际上是Windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为Windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象,程序将想要访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象以及物理地址了。

句柄是一种指向指针的指针,我们知道, 指针是一个内存地址,windows是一个以虚拟内存为基础的操作系统。在这种情况下,windows内存管理器经常在内存中来回移动对象,对此来满足各种应用程序的内存需要,对象被移动意味着它的地址变化了,windows操作系统为各应用程序腾出一些内存地址,用来专门登记应用程序中内存的变化,这个存储单元是不变的。

   很多人对句柄的概念不是很清楚或者理解很模糊。其实,句柄是一个32为的整数,实际上是Windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为Windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象及其物理地址了。

     句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存的。如果简单的理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,一次来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?为了解决这个问题,Windows操作系统为各应用程序腾出一些内存地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Win内存管理器移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载时由系统分配的,当系统卸载时又释放给系统。句柄地址(稳定)->记载着对象在内存中的地址->对象在内存中的地址(不稳定)->实际对象。但是,必须注意的是,程序每次重新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况下的确不一样。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的座位是一样的道理。

       HDC是设备描述表句柄。

       CDC是设备描述表类。

       用GetSafeHwnd和FromHandle可以互相转换。

       句柄和指针其实是两个截然不同的概念。Windows系统用句柄标记系统资源,用句柄隐藏系统的信息。你只要知道有这个东西,然后去调用就行了,它是个32bit的uint。指针则标记某个物理内存地址,是不同的概念。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值