寄ThoughtWorks面试失败沉思录

申请了cnblogsblog很久了,可以是文章很少。今天,突然有些文章的冲动,本人文笔水平确实不怎么好,在cnblogs混了很久一般都是潜水看看博友的文章或偶尔发表些评论,今天的冲动来源面试ThoughtWorksSenior .net developer的失败。想写写自己的心情,同时希望园子里的各位兄弟姐妹帮帮我,帮我不断的改进。

俗话说:“在哪里跌倒,就在哪里躺下”以前当笑话讲,现在觉得有几分道理(特别是现在我的这种境地),如果盲目的爬起来,不如就躺着想清楚想透彻了再起来,有些站着想不清楚的问题,不如可以趁着躺着的时候想想清楚。其实面试中受到挫折是很平常的不过的事情了,为什么我会这么在意呢?在意的不是面试失败本身,而是暴露在我现在身上的问题,就像今天下午电话面试的情况情况一样,面试官:你知道WCF的最大传输量吗?…………很基础的问题,我:对不起,我不知道。我全都答不上来。为什么呢?其实,实现面试官说的“深度不够”。回首自己开发工作的8年,在这8年里学习很多,解决过很多问题,我觉得这几年里,应该属于EDDExperience Drive Design经验驱动设计”,为什么说是EDD呢?最简单的举例:我不知道,WCF的最大传输量限制,但在如果通过评估后在传输较大数据包时,我会采用压缩和分包断点续传方式来解决这种分布式数据传输的问题,这种想法来源于在以前做Socket项目中遇到过的类似问题,EDD告诉我这样做是对的,实际上忽略了很多理论上的问题。

言归正传,说说做ThoughtworksHomeProject题(由于保密机制,此处省略一万字,你懂的。)我选的是Problem 2 销售税的问题,谈谈我的设计思路吧(虽然提交的这份代码最终导致了我连参加结对编程面试环节的机会都没有失去了,但我想请各位朋友帮帮忙,帮我持续改进,从而让我可以从中学习更多,谢谢各位)。

首先,我想用Visitor作为主要的设计模式。
 

 

Goods.GoodsTotalPrice()通过观察ICurrentSalexTax中的两个ImportedDutyRateTaxRate属性来计算当前货物的完税后的总价格。

再次,采用Strategy模式,用来计算多种免基本税、不免基本税、进口税的组合收税情况。

 

其次,用Singleton模式和Clone模式,Singleton用来唯一的实例GoodsSalesTaxProxy类,其中在GoodsSalesTaxProxy类用WeakReference对象,主要是清理Singleton中驻留的垃圾信息,用Clone模式来克隆出WeakReference中的对象保证WeakReference在生命周期内能及时被清理。

最后,采用Factory模式,创建不同的Goods的实体,为了增加Factory模式的威力,用了发射来创建Goods的实例,加入发射关键字的匹配。

Dome中使用到了Aspect,为什么会使用Aspect1、用来操作输出结果,ISalesTaxProxy. CalcTaxRateResult()的输出是一个object对象,object无异常输出为List型,为了匹配不同的输出,所有用Aspect来注入不同的结果打印方式。另外,异常输出为int型,通过注入可以对异常情况进行打印。2、记录函数日志,为了记录关键函数输入输出的异常日志信息而进行非入侵式注入。

大概的Demo就是这样一个思路,请各位朋友帮我继续完善,让我能从中吸取知识。大家也帮我提个建议:虽然我已经年过30了,但我坚持IT这条路一直走下去,我的职业发展方向是做架构师,请大家给点好的学习、成长建议以便小弟我能发展壮大。在此,感谢各位,同时感谢Thoughtworks给我这次机会,我也开始学习《Thoughtworks沉思录》。谢谢。

附录:Problem  Demo源代码

posted @ 2011-08-16 00:13  大肚小男人  阅读(9352)  评论(17编辑  收藏  举报