返回介绍

第1章 面试的流程

第2章 面试需要的基础知识

第3章 高质量的代码

第4章 解决面试题的思路

第5章 优化时间和空间效率

第6章 面试中的各项能力

第7章 两个面试案例

6.3 知识迁移能力

发布于 2024-08-21 20:57:09 字数 1178 浏览 0 评论 0 收藏 0

所谓学习能力,很重要的一点就是根据已经掌握的知识、技术,能够迅速学习、理解新的技术并能运用到实际工作中去。大部分新的技术都不是凭空产生的,而是在已有技术的基础上发展起来的。这就要求我们能够把对已有技术的理解迁移到学习新技术的过程中去,也就是要具备很强的知识迁移能力。以学习编程语言为例,如果全面理解了C++的面向对象的思想,那么学习下一门面向对象的语言Java就不会很难。在深刻理解了Java的垃圾回收机制之后,再去学习另外一门托管语言比如C#,也会很容易。

面试官考查知识迁移能力的一个方法是把经典的问题稍作变换。这个时候面试官期待应聘者能够找到和经典问题的联系,并从中受到启发把解决经典问题的思路迁移过来解决新的问题。比如如果遇到面试题38数字在排序数组中出现的次数,我们看到排序数组就可以想到二分查找算法。通常二分查找算法用来在一个排序数组中查找一个数字。我们可以把二分查找的思想迁移过来稍作变换,用二分查找算法在排序数组中查找重复数字的第一个和最后一个,从而得到数字在数组中出现的次数。

面试官考查知识迁移能力的另一个方法就是先问一个简单的问题,在应聘者解答完这个简单的问题之后再追问一个相关的同时难度也更大的问题。这个时候面试官希望应聘者能够总结前面解决简单问题的经验,把前面的思路、方法迁移过来。比如在面试题40数组中只出现一次的数字中,面试官先问一个简单的问题即数组中只有一个数字只出现一次的情况。在应聘者想出用异或的办法找到这个只出现一次的数字之后,他再追问如果数组中有两个数字只出现一次,该怎么找出这两个数字?这个时候应聘者要从前面的思路中得到启发:既然有办法找到数组中只出现一次的一个数字,那当数组中有两个数字只出现一次的时候,我们可以把整个数组一分为二,每个子数组中包含一个只出现一次的数字,这样我们就能在两个子数组中分别找到那两个只出现一次的数字。接下来我们就可以集中精力去想办法把数组一分为二,这样就能找到解决问题的窍门,整个题目的难度系数就降低了不少。

知识迁移能力的一种通俗的说法是举一反三的能力。我们在去面试之前,通常都会看一些经典的面试题。然而题目总是做不完的,我们不可能把所有的面试题都准备一遍。因此更重要的是每做一道面试题的时候,都要总结这道题的解法有什么特点,有哪些思路是可以应用到同类型的题目中去的。比如为了解决面试题翻转单词顺序,我们先翻转整个句子的所有字符,再分别翻转每个单词中的字符。这样多次翻转字符的思路也可以运用到面试题左旋转字符串中(面试题42)。在解决面试题28字符串的排列之后,我们发现八皇后问题其实归根到底就是数组的排列问题。本书中很多章节在分析了一道题之后,列举了和这道题相关的题目,读者可以通过分析这些题目的相关性来提高举一反三的能力。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文