揭秘腾讯面试:三道算法题背后的故事与挑战

时间:2025-03-29 00:06 分类:其他教程

前言

前两天,我抱着“玩一玩”的心态投递了腾讯的简历,没想到竟然真的收到了面试邀请。那一刻,心里既激动又忐忑。好在腾讯的面试官非常友善,表示可以无限复活,所以我决定以一颗平常心去面对这次挑战。当然,如果面试失败了,就当是去学习和锻炼一下自己。

面试的第一道题就是一道算法题,而且还不允许我先自我介绍。题目要求实现一个名为 HardMan 的函数,这个函数没有任何提示,直接让我一头雾水。我试图从后续的题目中寻找线索,但最终还是决定先写一个简单的示例代码。然而,我的代码不仅没有解决问题,还导致程序无法运行。面试官看出了我的困惑,便开始引导我,帮助我理清思路。尽管如此,我还是感到有些手足无措,完全不知道自己在说什么。

接下来,让我们来看看正确的答案吧。原来,我在实现 HardMan 函数时,忘记将 Promise 返回给调用者。只要在函数末尾加上 async 关键字,这个问题就能迎刃而解。下面是修改后的代码:

function HardMan(name) {
    console.log(`I am ${name}`);
    return {
        rest: function (seconds) {
            return new Promise((resolve) => {
                setTimeout(() => {
                    console.log(`// 等待 ${seconds} 秒`);
                    resolve();
                }, seconds * 1000);
            });
        },
        learn: async function (subject) {
            await this.rest(5); // 默认等待 5 秒
            console.log(`Start learning after 5 seconds`);
            console.log(`Learning ${subject}`);
        }
    };
}

接下来是《力扣》上的两道题目。首先是《打家劫舍 II》,这是一道经典的动态规划问题。我曾经跟随《代码随想录》一起刷过这道题,所以我对它颇有信心。然而,当我尝试在面试中实现时,却因为紧张而忘记了具体的代码实现。幸运的是,面试官并没有责怪我,而是鼓励我继续努力。

最后是《打家劫舍 III》,这是一道关于二叉树的问题。虽然我觉得这道题有一定难度,但由于时间紧迫,我还是没有深入研究。在面试中,我尽力向面试官解释了我的思路,但显然我并没有准备好。

总的来说,这次腾讯的面试让我受益匪浅。通过这次经历,我不仅学到了很多关于算法和数据结构的知识,还锻炼了自己的应变能力和沟通技巧。当然,我也意识到自己在某些方面还存在不足,比如对二叉树遍历的熟练程度还不够。为了更好地准备未来的面试,我将继续努力学习和实践。

总之,这次腾讯的面试经历让我收获颇丰。我会将这些宝贵的经验铭记在心,并在未来的工作中不断努力提升自己。同时,我也感谢那些给予我帮助和支持的人,他们的陪伴让我更加坚定地走上了职业发展的道路。

声明:

1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。

2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。

3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。

4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。

本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 0人参与,0条评论
查看更多

Copyright 2005-2024 yuanmayuan.com 源码园 版权所有 备案信息

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告