销售税问题:
重点:
- 按类型征税,某些类型免税;
- 还有出口税,按是否出口收税;
- 税收取值问题,税金上舍入 0.05
N久没有做过类似的题了,略分析,便可知道考核点:策略模式,以及基础的算法,这样的考试其实比单纯的做题面试要好很多,直接考核编程能力,并可以从代码上分析出个人编码风格。
好吧,先说结果,题做的不错,面试也不错,可惜HR忽悠我不太考核英语,恰恰英语口语把我刷了,哎~~~浪费时间啊!英语是短板,是短板,是短板!需要好好补充,以后不受这歧视!
上舍入
先说上舍入,以下是google出来的,简洁哦:
public static decimal roundUpToZeroPZeroFive2(decimal input) {
var output = Math.Ceiling(input*20)/20;
return output;
}
以下是自己写的,按照算法推导的。
public static decimal roundUpToZeroPZeroFive2v2(decimal input)
{
decimal dPrecent = 100;
var nTmp = (long)Math.Floor(input * 100);
if ((nTmp % 5) == 0)
{
return (nTmp / 5 ) * 5 / dPrecent;
}
else
{
return (nTmp / 5 + 1) * 5 / dPrecent;
}
}
看起来基础不够扎实,写的有点啰嗦。。。
策略模式
我的思路跟上图类似,抽象出一个额外税收的基本接口,实现两个税收类(销售税和出口税),
定义一个商品类,一个商品集合类;
商品集合类处理税和总价。
一气呵成,对方给的三个测试用例,也一次成功!
优化
感觉优化的地方不多,因为没有扩展的需求,盲目优化导致项目复杂而难以维护,本着能少写代码就少写的原则,不做不必要的优化。啊哈哈,估计不优化并不是对方的目的。但按本心走,over!
结论
老外面试一把到底,晕菜了,HR是拿我冲人数的吗~~~~
老外的面试及其给的学习建议:多读,阅读掌握词汇量,这和之前看的培训有很多相似之处!也算是略有所得!感谢这外美国老外!