小菜的CLR之旅(1)

 第一章 面试受挫

           小菜已经工作2年了,在开发方面也积累了不少开发经验,他像往常一样背着自己的笔记本去吃早餐,挤地铁,上班,来到吃早餐的地方给老板说了句:“老板还老样子”, 一杯玉米粥,两个椒盐饼,老板突然说玉米粥涨价了2块一杯,小菜在心里说了句:“我X”,但小菜也是知识青年,就没说出口,他问老板“昨天不是1块吗,今天怎么两块了....?”,老板回答说:"前段时间10块钱可以买多少肉,现在可以买多少肉........唠叨了半天  ".  

          小菜也觉得口袋的钱越来越少,刚进公司的时候3.5k做了两年还不到4k,还要交房租,哄女友。。。。每个月剩下的寥寥无几,有时候半毛钱都不剩,而公司老板却希望你什么都会,做像苹果一样的UI,没有抱怨,最好傻呼呼的。 小菜突然对自己说不能这样下去了,还要娶媳妇呢,他来到公司,依然是第一个到公司,他就在xx招聘网站上刷新了下以前在上面的简历,继续一天的工作。。。。

         N天后小菜感觉好久没打开自己163的邮箱发现自己的邮箱收了很多HR的面试通知,窃喜。但很多邮件都是一些小公司HR发的,小菜现在就想进一家中大型公司,做自己的产品,有技术团队,当然 一般中大型公司 Money 也不会低。小菜看到有一家上市公司做房地产项目,小菜心里说:就他了。跟HR越好XX时间面试,HR最后问他期望薪水是多少,小菜说:"5.5k" . 小菜看半天没说话心想是不是说多了,5.5k还多 X。HR说:"我们给你7.5K吧,因为项目紧张近期会加班, 没有加班费计算。 但加班是按照1:1倒休的。呵呵,省的入职后会觉得没有加班费心里不平衡。" 大公司就是不一样啊,小菜激动的半天没说话。。。。。。。

        明天就要去xx公司面试了,小菜准备打一把Dota的,心想今天晚上怎么也得看下基础的知识,以前面试一般都会问些: 概述.net访问权限,string和string和stringbuffer的区别,类和结构区别呀,重载和重写呀什么的,小菜心想这些我都烂熟于心了,就看了些Js 的一些资料。

       这天一大早,坐车来到xx公司,在前台mm面带笑容的引导下来到公司会议室,mm说给我倒茶去,我非常绅士的说了句:"谢谢",大公司的mm果然漂亮呀,而且声音特好听,很柔弱听着骨头都有点软了,呵呵,扯淡了,mm拿了份面试题,说然给我先做下,写完了安排面试官面试,小菜看了下5道题全部是编程题,没有以往的基础问答题和蛋疼的思维逻辑题,对于2年工作经验的小菜来说几道还算不难的编程算法弟还算难不到小菜的,三下五除二10分钟就写完了,倒数第2题看着很简单小菜却无从下手,踌躇犹豫中。题目是:”a user entered an integer value into a text box. convert the numeric string to its integer representation. can not use Parse,TryParse,convert“,在思索了半天小菜还算做出来了。

            把面试题写完给前台mm后,小等片刻后,这时走来了两个面试官,穿的是西装,比较绅士,比较儒雅和自然,呵呵,不要想成像卖保险穿的那样,面试官很直接没要我做自我介绍之类的直接问我问题了,我心想你就尽管问吧。在工作中的常用的知识点,我还是知道的,就算不知道也可以说出个大概。。。面试官开始问了

 

    面试官:"CLR在执行编写好的源代码之前需要做哪些工作?"

     小菜一听有点懵了,定了定神想了下说:"主要份两个阶段:1.把源码编译为Miscrosoft中间语言(IL)。 2.CLR 把 IL 编译为平台专用代码。"

     小菜心想应该是对的,但不敢确定还有其他步骤。

    面试官:"List<string>和List<int>他们是同一个父类吗?,父类是哪个?"

     小菜捏了把汗,回答道 :“List<T> 他们是同一个父类,继承的IList”

    面试官:"IList是接口,我问的是他的父类"

      小菜马上在脑袋里面搜索一遍好像没有啊,是 map,Collection 好像都不是,当时真的痛恨自己以前没有在Vs里面 按F12转到定义看一下,面试官看我在犹豫就问下一道题了.

     面试官:"Test2 t2 = new Test2() ,t2.Age.ToString()  Age是int类型 。ToString操作是否装箱?"

小菜想了下说:"上面ToString不涉及装箱操作,因为值类型都继承值ValueType,而ValueType本身重写了ToString()方法,所以不涉及装箱"

    面试官:".Age.GetType() 呢?"

小菜当时也不知道ValueType里面有没有GetType()方法,有没有重写,小菜也不知道就说道:"也不涉及装箱。"

     面试官:"值类型的父类是哪个?"   

      小菜:“ValueType”

   面试官:"ValueType父类呢?"   

    当时真想在网上找下.net 类库结构体系继承树图好好看下,小菜思索了一下,也不知道它上层明确继承自哪个,只有说道 :“System.Object”

   面试官:"你给我们讲下类和结构的异同?" 

    小菜:"结构与类的区别是它们在内存中的存储方式(类是存储在堆(heap))上的引用,而结构是存储在堆栈(stack)上,访问方式和一些特征(如结构不支持继承)"有所不同。

    面试官:"如果想把类存储在堆栈上怎么办?"

     小菜彻底傻了.....

    小菜:“没有把类存储在堆栈,这点不知道”

    

          面试官还问了些面向对象,接口,缓存,Js 原理,作用域,链式作用域,闭包等概念,幸好以前知道些,之前写温习了下,小菜都回答的八九不离十

 

      小菜之前的工作一直写功能代码,应用架构,也常常告诉自己应该从底层做起,以前以为自己底层知识还不错这次彻底被打击了, 在回家的路上小菜就告诉自己一定要把CRl底层的机制彻底搞清楚。

 

 

-----------------------未完待续,前面写了蛮多无关的,只是想引出后面的CLR知识,欢迎拍砖,你的顶就是我的动力---------------------- 

posted @ 2011-09-15 11:40  逍然  阅读(2422)  评论(24编辑  收藏  举报