寄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源代码

转载于:https://www.cnblogs.com/szp11/archive/2011/08/16/2140004.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Thoughtworks公司面试题——MARS ROVERS问题火星探测器 C# 实现 VS2010工程,带界面展示! 一小队机器人探测器将由NASA送上火星高原,探测器将在这个奇特的矩形高原上行驶。 用它们携带的照相机将周围的全景地势图发回到地球。每个探测器的方向和位置将由一个x,y系坐标图和一个表示地理方向的字母表示出来。为了方便导航,平原将被划分为网格状。位置坐标示例:0,0,N,表示探测器在坐标图的左下角,且面朝北方。为控制探测器,NASA会传送一串简单的字母。可能传送的字母为: 'L ', 'R '和 'M '。 'L ',和 'R '分别表示使探测器向左、向右旋转90度,但不离开他所在地点。 'M ' 表示向前开进一个网格的距离,且保持方向不变。假设以广场(高原)的直北方向为y轴的指向。 输入:首先输入的line是坐标图的右上方,假定左下方顶点的坐标为0,0。剩下的要输入的是被分布好的探测器的信息。每个探测器需要输入wo lines。第一条line 提供探测器的位置,第二条是关于这个探测器怎样进行高原探测的一系列说明。位置是由两个整数和一个区分方向的字母组成,对应了探测器的(x,y)坐标和方向。每个探测器的移动将按序完成,即后一个探测器不能在前一个探测器完成移动之前开始移动。 输出:每个探测器的输出应该为它行进到的最终位置坐标和方向。输入和输出 测试如下: 期待的输入: 5 5 1 2 N LMLMLMLMM 3 3 E MMRMMRMRRM 期待的输出 1 3 N 5 1 E

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值