158文章网欢迎您
您的位置:158文章网 > 范文示例 > 面试题“大数相加”及其在真实场景中的应用

面试题“大数相加”及其在真实场景中的应用

作者:158文章网日期:

返回目录:范文示例

今天小编给各位分享生活中的大数的知识,文中也会对其通过面试题“大数相加”及其在真实场景中的应用和高数在生活中有什么应用等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:
  • 面试题“大数相加”及其在真实场景中的应用
  • 高数在生活中有什么应用
  • C语言大数相加,字符反转怎么弄?
  • 几何知识在生活中的应用有哪些,请列举
  • 一、面试题“大数相加”及其在真实场景中的应用

    大数相加

    出事了!

    线上页面的价格显示有错的,而且样式也都错乱了。

    这...

    邻桌小乐再次遭遇了职业生涯“为数不少”的线上问题。

    怎么办呢?

    尽快修!好在问题被迅速定位到了,原来是浮点数计算的问题。代码一通改,常规的做法是不再使用“小数”计算,涉及“金钱”的部分统一格式为“分”,即使用“分”作为单位来计算,这样就都是整数的计算了。展示时再转化为“元”,再紧急发布,这样线上问题就解决了。

    原理篇

    在面试中,有一个经常被问到的问题为什么“ 0.1 + 0.2 !== 0.3”?

    详细的答案网上还是比较多的,这里笔者就不再针对这个问题展示讲解了。

    简单说下原因,是因为JavaScript中浮点数的存储和表示方式导致的问题。

    解决篇

    除了在开头提到的针对“金额”这个具体问题的处理方式,我们还可以使用“大数相加”的方式来通用地处理“计算中”遇到的问题。

    题目:

    对于一个超出JavaScript表示范围的数,请模拟加法来完成计算。

    样例:

    第一组

    输入:9999999999999,1

    输出:10000000000000

    第二组:

    输入:0.1,0.2

    输出:0.3

    解题思路

    “加法”的运算规则,大家一定都是清晰的,如何告诉程序呢?这里我总结了以下三个关键点:

    对于输入应该按各位对齐,即个位数加个位数,十位数加十位数,以此类推在有进位时,需要注意进位的处理在有小数时,需要对齐小数点后,再做运算

    好了,有了上面的三个关键点,这道题目的完成应该不在话下了。

    下面我们先给出一种朴素的解决思路:

    大数相加的朴素思路

    对于“进位”,可使用“取余”的方式来处理:

    这里还有两个额外的注意点:

    在做“字符串”相加时,需要先转化为“数字”,不然不会给出数值计算结果对于最后的输出,要再处理一下前序0和小数点后的后序0

    好了,老规矩,文章就先读到这里了,去自己试试吧。

    后续的内容请实践后再回来继续阅读。

    。。。。。

    。。。。。。。

    。。。。。。。。。

    。。。。。。。。。。。

    。。。。实践出真知。。。。

    。。。。。。。。。。。

    。。。。。。。。。

    。。。。。。。

    。。。。。

    欢迎回来,等您好久了

    归一化的解题方法

    上面的思路是正确的,实现也不复杂,可以直接在面试时使用。

    手敲代码的时候,大家一定会发现在处理“整数”和“小数”时,使用了很像的代码片段,实现的也是很类似的功能。

    这种情况其实在我们的实际开发中会有很多,逻辑上不同的部分,使用的却是很类似的处理方式。但是,其中又有明显的不一样,导致逻辑无法被完全重用。

    关键点来了~

    对于上述的类似情况,有一种通用的解决方案叫“归一化处理”,即先对输入或者要处理的部分进行一次处理,把不同部分的差异抹平,然后再使用“统一的逻辑”进行处理,以达到代码复用的目的。

    在我们的这个例子中,处理思路如下:

    本题的主要“不一致”在于小数点前后的部分的处理方式略有不同。那么把其中一种统一到另一种就可以。对于数字的小数部分,其实我们可以再进行“补位”,即让小数部分的长度相等,然后就可以直接应用整数部分的处理逻辑了。

    附图是完整的代码,其中:

    有一个单独的函数padToLen来完成“补位”代码中33和34行生产长度相同的数字字符串62行使用正则表达式完成小数点后追尾0的处理

    大家可以再试一下这种思路和解法,是不是比之前的代码少了不少,逻辑也更清晰了呢?

    总结

    对于“大数相加”,其本身的思路不难,在朴素方法中,主要需要注意进位的处理方式。而在有小数时,如何统一两部分的处理方式使用的方法则可以较多被使用在日常中,达到代码复用的目的。

    最后,祝大家都能理清所面对的问题,找到最高效的处理方式~

    对于“问题的系统性思考篇”引言

    开头我们提到了一次线上事故,真的修了就可以了么?

    请读者先自行思考一下,关于此处或类似问题,我们还可以做哪些事情呢?

    这里我们可以先提一下目标:

    有没有办法可以减少因为“不知道”或“人为疏忽”导致的“为数不少”线上问题,单纯靠人或者code review似乎并不够出现线上问题时,如何能够尽快地发现,而不是只有人肉通知

    每当出现一个问题的时候,其实都是一次进步的“机会”,那么对于上述问题,我们如何把握这个机会呢?

    小伙伴都想到了什么方案呢?我所经历的“大厂”又有哪些方案呢?

    期待的读者请在评论区告诉我吧~

    一、高数在生活中有什么应用

    这个问题本身是有一定问题的,如果仅仅是回答高等数学在生活中是否有用,那么答案是:几乎没有用。
    但是我们不能只盯着生活。一个人除了生活,还有大部分时间是用来工作的。如果不参加工作,每天都做家庭主妇或家庭煮夫,那九年业务教育初中毕业就足够了。
    那么我们在工作中是否就一定用到高等数学呢?这还是要看你工作的性质,你当个保安,保洁,服务员,中医,做小生意,搞艺术,当初级工人等等,那确实用不上高等数学,甚至连高中数学都用不上。但是我们要知道,还有更大一部分专业工作是必须依赖高等数学的。一般说来,凡是理工类大学生去找到对口专业工作,多数都是要用到高等数学的。
    即使在工程类,研发类的实际工作中,可能很多人真的一次都没有直接用过高等数学来解决工作中的问题。这也是很多理工专业人士现身说法,认为高等数学没有用的最大原因。事实上并非如此。数学,包括高等数学,它的作用主要是基础作用。以机械为例,高数没有学好,理论力学学起来就会很困难,理论力学没有学好,材料力学也难以学好,理论力学和材料力学都学不精,那机械原理更难学好。如果连机械原理都没有整明白,你以后工作中能做复杂的机械设计和制造吗?就是说高数是基础,是专业基础课的基础。很多人觉得我当年高数刚60分,后来也忘了,不是照样把专业课学好了吗?要知道,就算60分那也可以啊,总比完全没学过好。而且有本质的区别!要是不相信,可以随便去找一个从来没有学过高数的人,让他去接触理论力学,机械原理,有限元分析,看看差距有多大!
    为什么说高数是理工专业的基础?因为很多专业知识都是通过高数的知识推导出来的,要是不理解推导过程,就会掌握不深刻,死记硬背,生搬硬套。在毕业后的工作中,较少使用高等数学,但是会应用到专业概念。比方说方案设计讨论会上,有人提到“无功功率”,虽然整个讨论过程中不涉及任何数学公式,但是你得知道它是什么意思,怎么产生的,大一点好还是小一点好,与什么成相关关系等等。若当年没有学好高数,根本记忆不深刻。有人说了,百度一下啊。是的,有的东西可以百度。那么“傅立叶变换”,“闵氏空间”,你百度一下,没有高数以及以高数为基础的背景知识,能看懂吗,能理解透吗?你可能说,在工作中要是遇到这些高深的概念和术语,直接无视,我要的是结果。要是这样想,那很难成为技术的拔尖人才,没有竞争力,做的是普通工人都能干的活。
    总结一下,生活中几乎就用不到高数,理工相关的工作中,也很少直接使用高数公式去解决实际问题。但是高数是理工专业的基础。这就好比说,武林人士站马步,梅花桩,打坐调息在实际对战时根本没有用,但是不能否定他的基础作用。你不能因为后来成为大侠了而忘记了当年蹲马步,练内功时的那段必不可少的经历。

    二、C语言大数相加,字符反转怎么弄?

    1. 使用Array.Reverse方法

    对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法

    public static string ReverseByArray(string original)
    {
    char[] c = original.ToCharArray();
    Array.Reverse(c);
    return new string(c);
    }

    2. 使用字符缓存

    在面试或笔试中,往往要求不用任何类库方法,那么有朋友大概会使用类似下面这样的循环方法

    public static string ReverseByCharBuffer(this string original)
    {
    char[] c = original.ToCharArray();
    int l = original.Length;
    char[] o = new char[l];
    for (int i = 0; i < l ; i++)
    {
    o[i] = c[l - i - 1];
    }
    return new string(o);
    }

    三、几何知识在生活中的应用有哪些,请列举

    内容如下:

    1、摄影中的运用

    几何图形在摄影中的运用是和拍摄者的视角以及想法息息相关。规则几何图案往往在图案形状、颜色及线条上明显重复,呈现某种规律变化的花纹效果。在现实场景中拍摄这样的几何素材时,可就依其像花纹的特性,让图样占满画面,制造无限延伸的感觉。

    2、产品设计中的运用(几何图形-圆形)

    在建筑上,从建筑学的角度来说,圆形的建筑物更有利于减小风的阻力,从而减小了高楼风的形成的概率,即使形成高楼风,一般强度也要比普通建筑物小很多。另外,圆形建筑物的地基更稳固。

    圆形在传热学上讲,更能节省能源,因为圆形是放热最少的形状,为什么保温杯通常都是圆形的就是这个道理,天气很冷的时候猫科动物比如猫和老虎都喜欢将自己的身体蜷缩起来也是这个道理。

    圆是轴对称图形,也是中心对称图形。周长相同时,几何形中面积最大。在机械中,磨损最小,阻力最小而且美观,经济也很实用。

    因此,由于圆的种种优点,它被广泛应用在生活的方方面面,例如,井盖、水杯、车轮、方向盘、帽子、电风扇、家具、电灯等等。

    3、创意家居中的运用(三角形)

    三角几何图形所具有的独特线条美感被广泛运用于家居领域。

    4、传统编织中的应用

    英国设计师 Jo Elbourne 使用传统的编织工艺,探索看似简单但有无限可能的几何设计,手工编织出现代风格的编织凳子、家居用品与艺术装饰品。



    通过不同色彩的对比,透过色彩与形式的碰撞,简单的编织制品变成现代风格的美丽家居用品,而风格鲜明的几何图案,更让编织制品变成美观的艺术摆设。



    因为独特的创意与优秀的设计,并让古老技艺焕发新生,Jo Elbourne获得2017年度ELLE装饰设计奖(Elle Decoration British Design Award)。

    5、数学教学中的应用(动态几何图形)

    动态几何是在现近代数学思想的基础上发展起来的一种几何思想,它起源于上世纪80年代,最初的目的是利用相应的计算机软件代替圆规和直尺画直线、圆及其交点等几何图形。

    正如苏联著名数学家A.H.柯尔莫戈洛夫所指出的:“只要有可能,数学家总是尽力把他们正在研究的问题从几何上视觉化。”动态几何就是为这种“几何可视化”添上了动态的元素。

    后来,伴随着计算机多媒体的出现和迅猛发展,再加上教育现代化的新要求,动态几何逐步成为影响二十一世纪几何教育的有力思路,它的应用在中学数学教学中也逐渐突显出了其不可小觑的价值。

    关于生活中的大数的问题,通过《C语言大数相加,字符反转怎么弄?》、《几何知识在生活中的应用有哪些,请列举》等文章的解答希望已经帮助到您了!如您想了解更多关于生活中的大数的相关信息,请到本站进行查找!

    本文标签:生活中的大数(1)

    相关阅读

    关键词不能为空

    范文示例_作文写作_作文欣赏_故事分享_158文章网