《剑指Offer》第四章笔记


解决面试题的思路
     “编码前讲自己的思路是一个考查指标。一个合格的应聘者应该在他做事之前明白自己要做的事情是什么,以及该怎么做。一开始就编码的人员,除非后面表现得非常优秀,否则很容易通不过”。
                                                                                                                                             ——殷焰(支付宝,高级安全测试工程师)
    第一节给出了很多公司经理资深程序员对面试思路的看法,可以看出面试官对编程思路是很看重的,编码之前没有一个清晰的思路,编码时很容易犯错误,也会降低自己拿offer的几率。
    在面试的时候,我们难免会遇到难题,如何去解决这些问题,这章给了我们三个有力的方法:画图、举例、分解。
                                            


     1. 画图
        图形能使抽象的问题具体化、形象好,所以在面试过程中我们可以通过画图来帮助自己分析、推理。很多面试题很抽象,不容易找到解决办法,这时不妨画出一些与题目相关的图形,
        借以辅助自己观察和思考。
        像书中例题29:顺时针打印矩阵:输入一个矩阵,按照从外到里以顺时针的顺序依次输出每一个数字。例如,如果输入以下矩阵:
        1   2   3   4
        5   6   7   8
        9   10  11  12
        13  14  15  16
        则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。
        我开始看到题目的时候,心想这应该就是一个简单的模拟,只有确定好边界条件即可,然后就开始在脑海中想应该如何确定边界条件。而书中的解法是先画几个类似的矩阵方块图出来,
        进行几次模拟,把矩阵想象成若干个圈,用一个循环来打印矩阵,每次打印矩阵的一个圈,这样很容易就确定了循环开始和结束的条件。
      
    2. 举例   
        用举例模拟的方法也可以思考分析复杂的问题。当一眼看不出问题中隐藏的规律的时候,我们可以试着用一两个具体的例子来模拟操作的过程,这样说不定就能通过具体的例子找出抽象
       的规律。具体的例子也可以帮助我们向面试官解释算法思路。算法通常是抽象的,用语言不容易表述得很清楚,我们可以考虑举一两个具体的例子,告诉面试官我们的算法是怎么一步步
        处理这个例子的。同时,具体的例子还可以帮助我们确保代码的质量。在面试中写完代码之后,应该先检查一遍,确保没有问题再交给面试官,这时我们可以运行几个测试用例。我们可
        以把这些例子当做测试用例,在心里模拟运行,看每一步操作之后的结果和我们预期的是不是一致。如果每一步的结果都和事先预计的一致,那我们就能确保代码的正确性啦。
 
    3. 分解
        分解让复杂问题简单化。这个方法有点像分治法,将复杂的问题分解为类似的小问题,将小问题解决后,大问题也就差不多解决啦,通常可以用递归来实现。
#笔记#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务