当前位置: 首页 > news >正文

8步帮你解决面试遇到的编程问题

解决面试问题的最佳方法就是按照一定的方法来解决它。

(1)确保你理解这个问题。你对问题最初的假设可能是错误的,或者面试官的解释可能太简短或很难完全理解。如果你不理解问题,你就不能证明你的技能。在理解问题前,不要开始解决这个问题。面试官可能会故意模糊一些东西,以判断你是否可以找到并理解真正的问题。在这种情况下,要求澄清问题是正确的解决方案的重要组成部分。

(2)当你理解了问题之后,尝试一个简单的例子。一个特殊的例子可能引导出如何解决一般情况下的问题,或将消去任何剩余的误解。用一个例子来开始同样会展示一个有条不紊的逻辑思维过程。如果你没有马上找到解决方案,例子是特别有用的。

 

『注意』确保在你开始解决问题前理解它,并从一个例子开始加深理解。

 

(3)专注于解决问题的算法和数据结构。这可能需要很长的时间,需要更多的例子。这是可以预料的。互动在此过程中是很重要的。如果你站在那儿静静地盯着白板,面试官没有办法知道你是否取得一些进展或根本一无所知。与你的面试官交谈,并告诉他你在做什么。例如,你可能会这样说:“我不知道我是否可以将数据存储在一个数组中,然后对它们进行排序,但我不认为这样可以,因为我不能快速查找数组中的元素的值。”这能展示你的技能,这是面试中的要点,也可能引发面试官给你提供暗示:“你离问题的答案已经不远了。你真的需要查找的元素的值吗?或者你可以……”

这样做可能需要很长的时间来解决问题。在找出一个完整的解决方案前,你可能会忍不住开始编码。抵制这样的做法。想想你更愿意与哪一类人共事:是那些花很长时间思考然后一次就写出正确的代码,还是那些匆忙地开始解决问题,在编码时接连地犯错,并且不知道原因的人。这并不是一个艰难的决定,是吧?

(4)在找出算法和实现方案后,向面试官说明你的解决方案。这会在开始编码前给面试一个机会以评估你的解决方案。你的面试官可能会说:“听起来不错,继续编写代码吧。”或类似这样:“这不完全正确,因为在散列表中你无法以这种方式查找元素。”另一种常见的反应是:“这听起来像是可以解决问题,但有一个更有效的解决方案。”无论是哪种情况,你都获得了是继续编码还是拐回去修改算法的有用信息。

 (5)当你在编码时,解释你在做什么。例如,你可以说:“在这里,我把数组元素全部初始化为零。”让面试官更容易理解你的代码。

 

『注意』在开始编码之前和编码过程中,都要向你的面试官解释你在做什么。要多说话!

 

(6)如果有需要就提问。如果你问的问题是通过查询参考手册就可以找到答案,一般不会因此失分。你显然不能问这样的问题,例如,“我该如何解决这个问题?”但是如果问这样的问题,“我不记得了——我该使用怎样的格式化字符串,才能打印出本地化的日期。”虽然知道这些东西会更好,但是问这类问题也无伤大雅。

 (7)在你写出解决问题的代码之后,立即用一个例子来跟踪代码的运行过程,以验证代码的工作原理。这一步清楚地表明你的代码是正确的,至少这个例子是这样的。这也说明了一个合乎逻辑的思维过程和你检查代码和寻找错误的意图。这个示例也可以帮助你找到解决方案中的小错误。

(8)请一定要用各种出错情况和特殊情况来检查你的代码,特别是边界条件。程序员可能会忽略许多出错情况和特殊情况。在面试中忘记这些情况预示着你在工作中也可能会忘记。如果时间不允许进行广泛检查,至少要说明,你应该检查此类错误。包含出错情况和特殊情况可以给面试官留下深刻印象,并帮助你正确地解决问题。

 

『注意』尝试一个例子,并且检查所有的出错情况和特殊情况。

 

当您尝试了一个例子,并对代码的正确感到满意之后,面试官会问你一些关于你写下的代码的问题。这些问题往往侧重于运行时间、不同的实现和复杂度。如果你的面试官没有问你这些问题,你应该主动提出这些信息,表明你认识到了这些问题。例如,你可以说:“这个实现具有线性运行时间,这可能是最好的,因为我需要检查所有的输入值。动态内存分配会略微影响它的运行速度,使用递归也会有一些开销。”

-------------------------------------------------------------------------------------------

以上内容摘自《程序员面试攻略(原书第3版)

原文书名:ProgrammingInterviews Exposed: Secrets to Landing Your Next Job, Third Edition

作者:(美) JohnMongan Eric Giguère Noah Kindler 著 

译者:李秉义 译 

书号:978-7-111-44434-3

定价:59.00元

出版时间:2014 年1 月

出版社:机械工业出版社

 

【编辑推荐】

一本影响了全球数百万程序员的求职面试宝典,Amazon超级畅销书,持续销售近10年

授人以鱼,全面讲解程序员面试时需要掌握的各种编程必备知识和技巧;授人以渔,针对来自全球顶尖IT企业的极具代表性的面试题给出了解答思路,并揭示了这些企业的面试过程




相关文章:

  • 如何一年完成MIT33门计算机课程?
  • 3月4日 与柳传志面对面(谁是这个时代的思想家)
  • 算法心得:高效算法的奥秘
  • 设计模式之禅(第2版)
  • 大规模分布式系统架构与设计实战
  • 2018年值得关注的10种机器学习工具
  • 堕落Java vs 新贵 Python,2018 年最应该学习哪一门编程语言?
  • 为什么2018年将是混合云的元年?
  • 开源软件贡献者Top 10!第一名当之无愧!
  • TIOBE 年度榜单揭晓:C 语言夺冠,Python 紧随其后
  • 微服务高可用架构-基于支付场景的实战
  • 福利丨好书申请免费送【1.12】
  • 张小龙现场约战跳一跳,曾最高6000分!
  • 借鉴德国工业4.0推动中国制造业转型升级
  • 区块链的本质是什么?看完这篇秒懂!
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 4. 路由到控制器 - Laravel从零开始教程
  • Git 使用集
  • js
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • miaov-React 最佳入门
  • nodejs:开发并发布一个nodejs包
  • python_bomb----数据类型总结
  • ucore操作系统实验笔记 - 重新理解中断
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • windows下如何用phpstorm同步测试服务器
  • 阿里云前端周刊 - 第 26 期
  • 从输入URL到页面加载发生了什么
  • 回顾 Swift 多平台移植进度 #2
  • 山寨一个 Promise
  • 什么软件可以剪辑音乐?
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 《天龙八部3D》Unity技术方案揭秘
  • MyCAT水平分库
  • 正则表达式-基础知识Review
  • ​520就是要宠粉,你的心头书我买单
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (20050108)又读《平凡的世界》
  • (pojstep1.3.1)1017(构造法模拟)
  • (三分钟)速览传统边缘检测算子
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • .net 托管代码与非托管代码
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net反混淆脱壳工具de4dot的使用
  • .NET学习教程二——.net基础定义+VS常用设置
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @ModelAttribute注解使用
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • []串口通信 零星笔记
  • [1]-基于图搜索的路径规划基础
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件