zoukankan      html  css  js  c++  java
  • 问题清单

    第一课

    1.如何解决软件开发的挑战?

    答:

    1.方案封面需要公司给定的封面——显得正规

        2.方案最好有目录——让别人看起来更方便

        3.方案最好要有对应得图,不能是纯文字

        4.方案的可行性

    2.软件复用是什么意思?

    答: 软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。

    3.ISO9126质量模型是什么?

    答:ISO9126软件质量模型,是评价软件质量的国际标准。6个特性27个子特性组成。1、ISO9126功能性 2、ISO9126可靠性 3、ISO9126易用性 4、ISO9126效率性 

    第二课

    1.怎样写外部文档支持的代码?

    答:

    获取css全部样式的2种方法:
        1.getComputedStyle(obj,false).color  // 除IE之外的浏览器
        2.obj.currentStyle.color  // IE
    示例代码
    <script>
      function getStyle(obj,attr){
        return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,null)[attr];
    }
    </script>

    2.模块化程序设计有什么窍门吗?

     答:1、在C语言的程序设计时,通常将一个大的程序功能分成若干个较小的模块,每个模块编写成结构清晰,接口简单,容易理解的程序段,即函数。这种方法就叫做模块化的程序设计方法
    2、函数的定义包括函数的包括函数的声明和函数的实现。函数的声明包括返回类型,函数名称和形参列表,函数的实现即是在函数声明后面的花括号里面包含的内容。

    3、函数的参数
    ①无参函数:在调用无参函数时,主调函数不将数据传递给被调用函数,无参函数可以带或者不带返回值。
    ②有参函数:在调用函数时,在主调函数和被调函数之间有数据传输。
    ③定义函数式的参数称为形参,形参在函数未被调用时没有确定值,只是形式上的参数,调用函数时的参数称为实参,实参可以是变量、常量、表达式,有确定的值。函数定义时,形参不占用内存,在发生调用时,才分配内存,并接受实参传来的值。
    ④函数的形参和实参个数要求相等,对应类型一致,且顺序要相同
    ⑤形参用于调用函数和被调函数之间的数据传递,因此需要类型说明

    3.有哪些好的集成开发环境?

    答:1.VS/Eclipse系列2.gcc系列3.CB/CL等系列

    第三课

    1.代码审查的重要性?

    答:

    如果您认为只要进行测试就不需要进行代码审查,那么以下提到的好处可能会使您的想法转向不同的想法。

    • 早期错误检测:在开发阶段的早期阶段检测到错误时,可以减少测试阶段的大量时间。整个过程变得很便宜。尽管如今,自动化测试减少了测试工作量和花费的时间,但是,没有比检测和纠正其他人所犯错误的人性更好的天赋了。
    • 指导低年级学生:当新生参加项目时,高年级学生可能没有太多时间来指导或指导大三学生进行编码实践或培训他们如何工作。在这种情况下,对于高级开发人员而言,理想的解决方案是花费至少20-30分钟的时间来审查初级用户编写的代码。定期的反馈将使新生能够发展自己的编码技能。
    • 敏捷时代:如今,大多数组织都遵循敏捷方法论,要求及时交付高质量的工作。代码审查将使组织能够开发出无缺陷且遵循标准协议进行开发的高质量原型。
    • 团队凝聚力:频繁的讨论讨论使团队更加紧密,使他们意识到彼此的长处和短处,并避免他们陷入孤立的环境中。
    • 符合标准:在敏捷时代,客户经常要求我们遵守特定的编码标准。但是,较新的开发人员通常不了解行业标准编码。经常检查有助于确保代码遵守利益相关者设定的规则和标准。

    2.除了优化代码算法,还有其他提高性能的方式吗?

    答:1) 提高循环运行效率2) 尽量少在循环中调用过程3) 消除不必要的存储器引用4) 循环展开技术(loop unrolling)5) 用指针代替数组6) 提高并行性7) 充分利用处理器的cache

    3.分工合作和结对编程那个更好?

    答:

      1. 一、团队合作的优点
      2. 1、分工不同
        团队成员能够处理更大的项目并且更快地完成工作任务,团队合作创建了更简单、更高效的工作流程,有人曾说:“团队合作能够分化任务,并取得双倍的成功。”从另一方面来说,某些工作需要一丝不苟地完成,有些工作只适合一个人独立完成。
        2、一加一大于二
        团队合作有利于集思广益,如果在寻求反馈或者集体讨论,那么团队合作可能非常有帮助,如果遇到问题,几个人从不同角度看待问题,那么就很容易解决问题。大家也都听说过人多误事,如果团队成员不能达成共识,那么意见可能非常多,你可能面临的分歧更大,工作也不会有进展。
        在这种情况下,最好的解决办法是后退一步,提醒成员们铭记团队的共同目标,这不是纠结对和错的问题,而是将完成工作放到首位。团队合作就是即使共同目标变得模糊,成员们也会朝着共同目标努力。
        3、团队合作有利于促进团体成员共同进步
        成为团队一员后,人们会更加努力工作,在工作中,如果团队合作良好,每个人相处融洽,那么就会产生更加积极的协同效应。即使最弱的团队成员也一样强大。每个人对团队的贡献都不相同。
        二、团队合作的劣势
        1、交流问题
        团队成员们分属不同的工作地点时,冗长的电话会议和大量的电子邮件会阻碍项目的进程,和其他团队成员一年见几次面,大多数时间通过电话会议联系,团队有许多人,但是许多人一起召开电话会议并不容易。

    下面是一些结对编程的优点:

    1. 程序员互相帮助,互相教对方,可以得到能力上的互补。
    2. 可以让编程环境有效地贯彻Design。
    3. 增强代码和产品质量,并有效的减少BUG。
    4. 降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。
    5. 在编程中,相互讨论,可能更快更有效地解决问题。

    当然,结队编程也会有一些不好的地方:

    1. 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
    2. 有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。
    3. 两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
    4. 结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
    5. 面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。
    6. 新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。
    7. 有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。

     第四课

    1.黑盒测试与白盒测试的优缺点?

    答: 黑盒测试的优点有 :

           1) 比较简单,不需要了解程序的内部的代码及实现
                            2) 与软件的内部实现无关
                            3)  从用户的角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题
                            4)  基于软件开发文档,所以也能知道软件实现了文档中的哪些功能
                            5)  在做软件自动化测试时较为方便
                        缺点 :
           1) 不可能覆盖所有的代码, 覆盖率较低,大概只能达到总代码量的30%
                            2) 自动化测试的复用性较低。
     白盒测试的优点有 :
           1) 帮助软件测试人员增大代码的覆盖率。 提供代码的质量,发现代码中隐藏的问题
                           
    缺点 :
           1) 程序运行会有很多不同的路径,不可能测试所有的运行路径
                            2) 测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求
                             3) 系统庞大时,测试开销会非常大。
    2.测试覆盖率高有什么好处?
    答:当代码覆盖率超过一定水平(约70%以上),测试套件的维护变得越来越困难。
    3.有哪些好的单元测试工具?
    答:Worktile。
    第五课
    1.什么时候用瀑布模型?什么时候用原型化模型?
    答:当开发的软件是已知领域和行业,并且有比较好的积累,有可抄重用的架构或者模型。或者软件对安全和性能有极其严格的要求,容不得半点疏漏,比如航空航天软袭件。这样用瀑布模型的话能够有效地控制每一环节,所有流程百都有文档可循。
    而规模不是很大的,商业型的应用软件,更倾向于快速得到可用的软件。而度且软件需要能够适应市场的变化作出相应的调整。原型模型无疑是更适合的。
    2.用Brooks法则,导致还是缓慢怎么办?
    答:Brooks是北罗莱纳大学计算机科学教授,他阐述了所谓的Brooks法则:为推迟的软件增加人力将使得软件时间发布更晚.
    Brools教授解释说,这是因为后来者需要加快速度,同时还要与前任进行沟通,从而使得开发团队增加了更多的开发时间,这个时间超过了新增程序员所做的贡献.
    从理论上说,软件发展陷入僵局是可能的,此时开发团队极其庞大,以致所有时间都来互相沟通和重新决定,这样项目永远也不会完成.
    另一方面,Brooks教授写道,灾难来源于漏洞。
    3.如何解决沟通障碍?
    答:据调查,管理人员有90%的工作是沟通,是和人打交道,所以,搞好人际关系很重要,要学会沟通的技巧.许多人在和别人沟通时容易只站在自己的立场上,希望别人能够理解自己,忽略了别人内心的想法,经常觉得自己是正确的,别人应该听自己的,或者爱用自己的标准去要求别人,结果却给别人造成"以自我为中心,盛气凌人"等不好的印象,尤其是位置越高,这个问题就越严重,心理学家要求这样的人要学会站在别人的立场。
    第六课
    1.敏捷开发的特点?
    答:(1)敏捷开发方法是“适应性”(Adaptive)而非“预设性”(Predictive)。(2)敏捷开发方法是“面向人”(people oriented)而非“面向过程”(process oriented)。
    2.敏捷开发的优点?
    答:1. 精确要求,精准成果。敏捷开发不似瀑布模式的开发,从一个点开始却会以一大片结束。这样的开发会导致成果与出发点严重偏离,重点无法被作为重点开发出来,而是与原来的构想相差甚远。敏捷开发似接力比赛,每一段赛道都不长,并且还能把握好每次交接棒的时机,遵循计划更响应变化,这使成果变得十分精准。

    2. 质量有保障。敏捷方法对每一次迭代周期的质量都有严格要求。敏捷开发团队拥有高水平的开发方法,有的会在正式开发功能代码之前先开发该功能的测试代码,质量可保证。

    3. 客户合作胜过合同谈判。好的团队会更在乎与客户合作的这个过程。

    4. 投资回报率高。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。

    5. 较高的速度是敏捷开发最显著的优点之一。敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。

    3.敏捷开发的缺点?

    答:但敏捷注重人员的沟通,忽略文档的重要性,若项目人员流动大太,又给维护带来不少难度,特别项目存在新手比较多时,老员工比较累。

    需要项目中存在经验较强的人,要不大项目中容易遇到瓶颈问题。

    第七课
    1.为什么要建立初始时间表?
    答:为了更好地把握完成时间。
    2.为什么首要原则是对结果估计而不是活动?
    答:这就是经验.经验在做事中非常重要,有经验,你的预测相对才准确.一般情况是,有经验后,遇事才有感觉,有感觉后,就能估计有几种可能后果,有了zhidao可能的后果,根据你掌握的事实情况,你才能推版断最有可能出现的几种(一般设定二到三种)后果,然后,才有算度(就是算几步),如果你没有经验,这些都不可权能.就像下棋,一开始很难想象别人走一路的意图是什么,下多了,就知道可能有哪些想法,这样就想起来就更容易了。
    3.什么时候用功能点方法?什么时候用结构性成本模型?
    答:用功能点方法来度量的软件有以数据和交互处理为中心的;以功能多少为主要造价制约因素的,有效的软件成本估算是软件产品合理控制和科学管理的前提。
    第八课
    1.燃尽图好处?
    答:燃尽图最重要的作用就是提供了一种可视化的进度预测能力。
    2.什么是Delphi估算原理?
    答:专家估算是由一个被认为是该任务专家的人来进行估算,且估算过程很大一部分是基于不清晰,不可重复的推理过程,也就是直觉。

    由于专家作为个体,存在个人偏见。

    所以有Delphi方法。

    步骤为:

    1,组织者发给每位专家一份软件系统的规格说明合一张记录估算值的表格,请专家估算。

    2,专家详细研究软件规格后,对该软件提出3个规模的估算值

      最小值a。

      最可能值m。

      最大值b。

    3,组织者对专家表格中的答复进行整理,计算每位专家的平均值E=(a+4m+b)/6,然后计算出期望值:E=(E1+E2+....+EN)

    4,综合结束后,再组织专家无记名填表格,比较估算偏差,并查找原因。

    5,上述过程重复多次,最终可以获得一个多数专家共识的软件规模。

    3.怎样保证软件技术状态的一致性?

    答:版本控制是全面实行软件配置管理的 基础,可以保证软件技术状态一致性。

    第九课

    1.怎样解决需求分析师七宗罪?

    答:1、妥协即放弃,不敢坚持2、用户需求=产品需求,不懂挖掘3、看不起小需求,不注重细节4、存在即合理,不敢质疑5、只看重商业价值,不重视用户体验6、产品需求变更频繁,不懂敏捷开发7、自我看待产品需求,不懂站在用户角度。

    2.评审和减少走查有什么区别?

    答:走查是审评过程中采百用的一种方法。走查时,软件设计者或程序开发人员指导一名或多名其他参加评审的成员,通度读已书写的设计文档或编码,其他成员问负责提出问题,并对有关技术、风格、可能的错误、是否有违背评审标准答的地方进行评论。
    审查是一种正式的评定技术。由除被审查对象的版作者之外的某人或某一小组自习检查软件需求、设计或编码,以找出故障和其他一些问权题。

    3.什么是A/B测试?

    答:AB Test 实验一般有 2 个目的:

    1. 判断哪个更好:例如,有 2 个 UI 设计,究竟是 A 更好一些,还是 B 更好一些,我们需要实验判定
    2. 计算收益:例如,最近新上线了一个直播功能,那么直播功能究竟给平台带了来多少额外的 DAU,多少额外的使用时长,多少直播以外的视频观看时长等

    我们一般比较熟知的是上述第 1 个目的,对于第 2 个目的,对于收益的量化,计算 ROI,往往对数据分析师和管理者非常重要

    对于一般的 ABTest 实验,其实本质上就是把平台的流量均匀分为几个组,每个组添加不同的策略,然后根据这几个组的用户数据指标,例如:留存、人均观看时长、基础互动率等等核心指标,最终选择一个最好的组上线。

  • 相关阅读:
    C# 灵活切换开发/测试/生成环境web.config
    c# sqlserver 删除大批量数据超时
    vue 上传进度显示
    sqlserver the name is not a valid identifier error in function
    WEBAPI 设置上传文件大小
    vue 获取视频时长
    webapi 导入excel处理数据
    vscode 通过ftp发布vue到azure服务器
    C# 汉字转拼音
    静态代码扫描工具
  • 原文地址:https://www.cnblogs.com/qwe12/p/12467415.html
Copyright © 2011-2022 走看看