Questions tagged «problem-solving»

解决问题包括许多技术,称为算法,启发式,根本原因分析等。

15
当事情不起作用时应对挫败感[关闭]
您曾经尝试实现一些简单的方法,但是由于某些奇怪的原因而无法正常工作。 因此,您尝试一个可能的解决方案,但其他方法不起作用。您一直在尝试不同的解决方法,但是每一次不同的方法都不起作用。 每次距离您更近一步,您也将比解决此问题更一步(或更多个步骤),而现在已经3个小时了,而这本来需要10分钟。而且仍然没有解决。 公司中没有人可以提供帮助,您将把拳头伸到屏幕上。 此时,您非常沮丧,无法再清楚地考虑问题了。此时您该怎么办?或者您可以采取什么措施来避免达到这一点?

12
哪种编程语言生成最少的难以发现的错误?[关闭]
您认为哪种语言可使普通程序员输出具有最少数量的难以发现的错误的功能?当然,这是一个非常广泛的问题,我对非常广泛和笼统的答案和智慧感兴趣。 我个人发现我花很少的时间在Java和C#程序中寻找奇怪的错误,而C ++代码具有其独特的重复性错误集,而Python /类似的语言具有其自己的一组常见和愚蠢的错误,编译器可以检测到它们用其他语言。 同样,我发现在这方面很难考虑函数式语言,因为我从未见过用完全函数式代码编写的大型复杂程序。请输入您的意见。 编辑:完全任意地澄清难以发现的错误:花费15分钟以上才能重现,或者花费1小时以上才能找到原因并修复。 如果这是重复的内容,请原谅我,但是在这个特定主题上我什么都没找到。

26
如何提高解决问题的能力?
每个人都说相同的话:“一个真正的程序员知道如何处理实际问题。” 但是他们忘记了如何学习这种能力或在哪里学习的:学校没有教授这种能力。 如何提高我处理复杂编程问题的能力?哪些策略对您有用?我应该关注哪些特定领域,例如算法或设计模式?

12
在面试中大声思考真的是最好的策略吗?[关闭]
在最近我问到的有关白板最佳实践的另一个问题中,人们普遍达成共识,即在提出答案时大声思考是最佳策略。 确实,长时间的沉默很尴尬。 但是,在最近的面试之后,我注意到,如果我的大声思考导致错误的解决方案或错误的道路,经过进一步的考虑,我会发现,面试官往往会迅速跳进并指出我的方法存在问题,特别是如果我停下脚步暂停一分钟。这不是一个孤立的案例,而是在与一位以上的采访者进行的一次以上的采访中发生的。 另一件事是,在面试后,我彻底轰炸了一个问题,当我坐下来在一张纸上默默地画出问题时,我能够很快地勾勒出解决方案。大声思考最终导致我花了很多时间思考我所说的必须如何向面试官注册,此外,我担心自己会走错路,并在写了一些东西之后重新开始浪费很多时间。一旦走上一条路,意识到自己写了很多垃圾,就无法撤消,但是如果您静静地思考,面试官将不会看到混乱,它会更快因为白板上的一个坏主意比单纯考虑一个坏主意要花费更多的时间。 我不希望自己保持沉默,但同时讲话会花费更多的时间,导致自我意识,并可能导致面试官对我可能只想多一点时间就能解决的问题进行干预。



9
抽象:解决问题和一般解决方案之间的战争[关闭]
作为一名程序员,我感到自己陷入困境,希望使我的程序尽可能抽象和通用。 这样做通常可以让我重用我的代码,并为可能(或可能不会)再次出现的问题提供更通用的解决方案。 然后我脑海中的声音说,解决问题虚拟化就这么简单!为什么要花比您更多的时间? 我们所有人的确都遇到过这个问题,抽象在您的右肩上,而“解决问题的愚蠢”在左边。 听哪个,多久听一次?您对此有何策略?您应该抽象一切吗?

13
采访中“白板编码”是否不合适?[关闭]
这是一个有点主观的问题,但我很想听听访问者/受访者对此主题的反馈/意见。 我们将技术面试分为四个部分。在白板上编写代码,阅读和分析代码,设计会议和代码。 对于最后一部分,我们要求受访者做的是在白板上写一个小的代码段(4-5行),并在他们通过时进行解释。让我清楚一点,目的不是要吸引别人。我们不是在寻找完美的语法。甚至可以是伪代码。但关键是要给他们一个非常简单的问题,看看他们的大脑是否可以将解决方案传达给我们。简单的问题,我的意思是“反向字符串”,“ FizzBu​​zz”等。 请注意,我们总是首先要求使用明确的语言。我们是.NET C#房子。我们只说过“伪代码”,其中有人一直在空白/确实在为代码苦苦挣扎。 我的问题是“期望程序员在面试期间在白板上编写代码段是否不合适/不合理?”

9
如何处理团队中开发人员之间的冲突?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 每个团队都在发生这种情况。 由于某些原因,团队中会发生冲突,它们会影响总体动力和生产力。 您建议采用什么方法解决该常见问题? 例子: 团队的一部分希望实施依赖注入,另一部分则认为这是浪费时间。 一些开发人员认为团队的其余成员正在减慢开发速度(这说明了为什么他们按计划迟到了) 一个或多个开发人员之间的个人不兼容性 一位开发人员拒绝与另一位开发人员交谈(无明显原因)

5
用于计算目标最大子弹路径的算法。2 ricochets
对不起,标题很抱歉,但我没有更好的措辞... 因此,任天堂在Wii上开发了一款名为WiiPlay的出色游戏(是!)。里面有9个迷你游戏,而我最喜欢的一个叫做《坦克》!。这是关于销毁COM敌方坦克而又不致使自己遭到破坏的事情。这是一个关卡的屏幕截图: 摧毁坦克的一种方法是发射子弹。有一个石灰绿色的敌方坦克,可以发射高速子弹,两次弹跳(对着墙壁和方块)。您会看到,如果玩家的坦克停在现在的位置,如何立即将其摧毁,因为位于中央的石灰坦克可以按照我在图像上绘制的绿色路径发射子弹。 作为一名业余程序员,我一直想知道石灰罐如何确定朝哪个方向射击以击打玩家罐。 我自己考虑过,但是没有提出任何可能的算法。如果他们启发了某人,我将解释我的结论。为了简单起见,我假设一堵墙是子弹可以弹到的任何表面。因此,一个孤立的矩形块形成了四个墙。 我得出的结论是,子弹跳线始终位于平行四边形的一侧或变成平行四边形的相反顶点的两个点。它瞄准的射击敌方坦克和玩家坦克不一定是其他两个顶点,而是肯定位于与平行四边形的四个边中的任何一个共线的直线上。这是形成平行四边形的4种可能方式的说明: HOR-VER意味着子弹首先撞击水平的墙壁,然后撞击垂直的墙壁。 然后我被卡住了。我曾考虑过绕一条连接敌方坦克和玩家坦克的地图绕线移动,以查看它是否与任何墙面的任何两个击打形成平行四边形,但这并不总是可行的,因为敌方坦克和玩家坦克不是必须与平行四边形的顶点重合。 另外,我不确定算法的一般流程。该算法是否采用以下两种结构中的任何一种,或者我对这两种结构都错了? 不断找出可能的路径,并始终将其标记为最佳路径(可以是最短,最模糊,最不可避免的路径,或者是基于多个标准的组合加权评估),而忽略了其余的路径。毕竟,剩下的一个是最好的选择。 首先确定首先由子弹到达的所有墙壁(子弹不需要弹跳到任何其他墙壁即可到达这些墙壁中的每一个),然后确定这些墙壁中的每个墙壁上的所有可到达范围(有时不可能到达目标上的遥远点)如果您附近还有一堵墙,则没有弹跳的墙),然后再次确定所有带有弹跳的可到达​​墙,以及在这些墙上可到达的所有范围。这4个过程可以通过类似于光线跟踪的方法来完成。在每个过程中,如果玩家的坦克被任何射线击中,请根据该射线找出子弹路径。 我认为该算法很难弄清楚,原因是: 子弹可以向任何方向发射;和 在数学上,每堵墙上都有无数个点,在线上有无数个点。 但是任天堂的人还是成功了,所以...有人有主意吗?

3
在压力下如何避免跳到解决方案?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在特别严格的编程截止日期(例如一个小时)内,如果我完全感到恐慌,我的趋势是跳入没有真正计划的编码,并希望我能继续研究下去。如果有足够的时间,这是可行的,但是在一次采访中,即使不是彻头彻尾的适得其反,它还是非常不成功的。我不总是舒服地坐在那里想着时钟打tick。 当您足够了解问题并开始编码时,是否存在核对表或是否存在识别技术?什么时候最能想到的是进行设计和设计,而不是进行一些实验,然后再进行总体设计? 这是参加数学考试和参加口语考试的技巧清单。是否有类似的技术清单来处理压力下的编程问题? 答案:我认为这是一个有效的答案:如何解决。我发现该链接是解决步骤或解决方案的答案。在上也有一些非常好的技巧。在面试中大声思考真的是最好的策略吗?。TDD的一个简洁明了的论据是TDD的第一个答案写代码vs找出问题的答案?。

6
什么时候比解决特定情况更偏爱通用解决方案
在编程中,我们经常面临选择:单独覆盖每个可能的用例,或解决一般问题: 很明显,解决当前问题的速度更快,但是创建一个通用的解决方案将在将来节省时间。 我怎么知道什么时候最好尝试覆盖一个有限的案例列表,或者建立一个通用的系统来覆盖所有可能性?

4
Monads解决什么编程问题?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我读过很多文章来解释什么是单子,如何使用unit和bind工作,其中一些直接陷入类别理论,如此抽象(至少对我而言),使眼睛流血,有些人完全忽略了这些,并触及了奇怪的类比。墨西哥卷饼,盒子和什么不。 经过几周的研究和大量的油炸神经元,(我认为)我了解了Monads的工作原理。但是,还有一件事让我无法理解,实际上很少有文章涉及(IO和状态除外): 为什么? 为什么Monad重要?他们为什么如此重要?他们正在解决什么问题?那些问题只能用Monad来解决吗,或者还有其他方法吗?

8
在面试中,为一个棘手的问题编写暴力解决方案还是花点时间仔细地检查问题是更好的选择吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 有时候,面试问题很难,无论面试官是否打算如此。可以选择使用有限的采访时间来编写丑陋,低效,蛮力的解决方案,还是花时间与采访者一起了解问题的各个方面。 例如,可以通过计算每个可能的三角形,编写isRightTriangle()测试并将通过测试的所有三角形弹出到集合中的不太困难的蛮力解决方案来解决Euler项目中的问题91。但是两对X / Y坐标使O(x ^ 4)解具有较高的恒定值。我和一个朋友提出了一个更加优雅,高效的解决方案,但是我们两个人花了3个小时在上面,绘制了数十张图表,测试了多种公式,研究了多种方法,等等。 并非每个面试问题都是公平的。同样,对一个人来说简单的事情对另一个人来说可能很难。如果有人在为一个问题而苦苦挣扎,那么有效的蛮力丑陋解决方案会让您印象深刻吗?还是出色的问题理解能力和无懈可击的解决方案,但却没有编码解决方案?是否有类似20分钟后的规则,无论如何都应该开始编码?

7
将压倒性代码分解为可管理块的最佳方法?
一旦大型项目达到一定程度的复杂性,我就会变得不知所措。一旦到达项目中的某个特定点,我的进度就会缓慢地爬行,并且发现自己不断地追踪自己的步骤并理清各种混乱。 由于我的这个弱点,我真的很擅长重构。而且我总是尝试将对象分解为更小,更易于管理的对象。这种弱点也可能导致我过多地注意正确设计事物。 我知道如果我可以将问题分解为较小的问题,那么我将能够顺利完成任务。想到的一种策略是测试驱动的开发。我还可以做些什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.