什么样的面试问题适合 C++ 手机屏幕?

2024-01-01

很想了解人们的想法。我经常进行采访,在我的职业生涯中已经有足够多的时间来反思这些采访,并且我注意到了各种各样的问题。我专门做了这个 C++,但值得注意的是,有人通过电话问我算法复杂性问题,我什至不是指哈希查找与二叉树的复杂性,我的意思更像是分析问题,例如“想象有 4 只大黄蜂,每只都嗡嗡作响。”

现在我个人更喜欢让电话屏幕更具体一些,并将抽象问题留给白板。那么,在进行 C++ 电话面试时,尤其是对于高级开发人员来说,您会涵盖哪些主题?

我知道还有另一个与此类似的帖子,但坦率地说,它似乎完全忽略了这一点:这是关于电话屏幕,而不是面对面的采访。另外,这是更具体的 C++。


我会问有关资源/内存管理的问题,因为它是 C++ 中的一个重要主题,并且不需要具体代码。只需勾画一个简单的假设场景,并询问他们如何确保即使面对错误/异常也能释放一些重要资源。假设他们正在开发一个网络应用程序,他们如何确保我们正确关闭套接字?当然,正确的答案是将其包装在 RAII 对象中,但不要直接问他们(很容易在 google 中搜索“RAII”,而上面的问题“如何确保资源得到正确释放”实际上向您展示了是否或者他们不知道适当的技术。如果他们回答“将所有内容包装在 try/catch 中”,他们可能会遇到问题。这与有关堆和堆栈之间差异的问题很好地联系在一起。

您也许也能提出一些关于异常安全的简单问题,这不需要任何实际代码。一般来说,我认为讨论所有各种 C++ 习惯用法可能是个好主意,因为其中许多习惯用法不需要​​太多实际代码,但仍然是重要的特定于语言的概念。

看看他们是否了解智能指针(最好还是给他们一个需要智能指针的情况,看看他们如何解决问题),也许还有模板/元程序(在后一种情况下,可能只是找出它们是否'意识到这是可能的,而不是要求他们在手机上编写实际的元程序)

您可能还想询问一些未定义行为的常见区域(执行后 a 和 b 的值是多少)a = b++ + b++??),或者分配一个包含 10 个元素的数组,并将 10 或 11 添加到数组指针,并询问每种情况的结果是什么(+=10 是合法的,给你一个尾指针,+=11未定义)。或者给他们一个需要复制大量对象的场景,并询问他们如何做到这一点(一次复制每个元素的简单 for 循环,memcpy 或 std::copy 是明显的答案。请注意 memcpy 的注意事项,这对于非 POD 对象来说不安全)

或者询问他们的总体编码风格。他们对迭代器有何看法?他们更喜欢普通的旧式 for 循环吗?他们知道如何使用 std::for_each 或 std::transform 吗?

Edit:看来a = b++ + b++(顺便说一句,答案是未定义的行为)建议特别产生了很多评论。也许人们对它的解读太多了。正如OP所说,他更愿意问concrete(不是抽象的,并且易于通过电话解释/回答/讨论)问题,这会揭示一些有关受访者的 C++ 技能的信息,这是一个简单的(是的,也许是挑剔的)示例。其背后的原因是:1)它具有直观的含义,这是错误的;2)在意识到这一点之前,您必须具有一定水平的 C++ 经验。当然,3),通过电话询问很简短且容易。它不需要任何人写下代码。不,它不会透露候选人是否是“伟大的程序员”,但据我理解这个问题,这也不是目标。如果有人弄错了,那根本没有多大意义,但如果他们做对了,你就可以相当肯定他们了解一点 C++。但如果您再次阅读我的答案,您会发现这只是我认为应该代表的一类问题的一个简单示例。 C++ 充满了未定义的行为,即使代码看起来完全无害且直观。要求候选人认识some这个实例可能很有用,无论是上面的“在同一表达式中修改同一变量两次”示例,还是其他示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么样的面试问题适合 C++ 手机屏幕? 的相关文章

随机推荐

  • C++11 编写模板以选择更大整数类型的方法?

    在 C 11 的编译时 在一个带有 2 个模板参数的模板函数中 这两个模板参数都必须是无符号整数类型 我希望局部变量的类型为两个模板参数中具有更多位的一个的类型 在 C 03 中我可能会写这样的东西 template
  • 为什么 Spring 4 在一个上下文中只允许有一个 TaskScheduler?

    我们有一个 Spring Web 应用程序 正在从 Spring 3 2 移植到 Spring 4 当 Web 应用程序启动时 我们的应用程序有多个子上下文组装到单个运行时上下文中 我们在两个子上下文中使用单独的 TaskScheduler
  • liquibase 的枚举数据类型

    我目前正在处理 liquibase xml 文件来创建表 table a 我的领域之一是
  • 在名称之间放置逗号

    我试图找出数据框中是否出现某些模式 假设我有以下 模式词典 注意 james 与 jamesj patterns lt c john jack james jamesj jason 我的实际数据框 date frame 如下所示 id na
  • 如何更改工具栏文字大小?

    我想改变文本的大小Toolbar 因为在我的申请中 Toolbar横向和纵向模式下的文本大小不同 是否可以更改文本中的文本大小Toolbar Use app titleTextAppearance https developer andro
  • 如何通过 shell_exec 在 php-apache docker 容器中重新加载 apache?

    我创建了多个虚拟主机 需要重新加载 apache 以使虚拟主机可用 但是shell exec service apache2 reload 似乎在容器内不起作用 根据我的理解是 php apache link https hub docke
  • 在另一个js文件中加载外部js文件[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有这个文件包含在我的 html 中 我想从另一个 javascript 调用它 请建议我该怎么做 我想将它包含在我的js文件中 而不是ht
  • ScrollView 与 flex 1 使其不可滚动

    我正在尝试在ScrollView 并且只要 ScrollView 有flex 1 the 内部滚动不起作用 这是博览会小提琴 您可以运行此代码并使用它 https snack expo io SySerKNp https snack exp
  • C++ map<字符,静态方法指针>? [复制]

    这个问题在这里已经有答案了 我编写了一个非常基本的表达式解析器 我希望它是可扩展的 以便它可以解析用户定义的表达式类型 例如 如果在解析时我遇到了字符 lt 我想创建一个类的实例 用于解析以此字符开头的表达式 我有两个问题 如何将字符与静态
  • 有没有办法自动生成有效的算术表达式?

    我目前正在尝试创建一个 Python 脚本 它将自动生成有效的空格分隔算术表达式 但是 我得到的示例输出如下所示 32 42 95 24 53 21 虽然空括号对我来说完全没问题 但我无法在计算中使用这个自动生成的表达式 因为 24 和 5
  • ORA-01704: 字符串文字太长 '在 Oracle XMLTYPE 列类型中插入 XML 文档时出错'

    当我尝试将 SQL 表中的数据插入 Oracle 表时 出现此错误 ORA 01704 字符串文字太长 在我的 Oracle 表中 有一列具有 XMLTYPE 列类型 当我创建表时 我指定了 XML 列 如下所示 CREATE TABLE
  • phpmyadmin、neginx error.log - 检查组 www-data 是否具有读取权限和 open_basedir

    我在 phpmyadmin 网站上有此消息 phpMyAdmin 配置存储未完全配置 一些扩展功能已被停用 要了解原因 请点击此处 在 单击此处 页面上 我有以下内容 页面打印屏幕 https www dropbox com s vhh4v
  • 在 Swift 中从 AVCaptureSession 捕获静态图像

    我有一个AVCaptureSession在 UIView 中显示实时视频 我想将视频流的一帧保存为 UIImage 我一直在剖析我在互联网上不断看到的代码 但我在第一行遇到了问题 if let stillOutput self stillI
  • 在打字稿文件上启用 Eslint

    在 webstorm eslint 设置中 有一个 额外 eslint 选项 字段 在此 我补充道 ext ts 来自埃斯林特文档 http eslint org docs user guide command line interface
  • 乘客问题:“没有要加载的文件”--/config/environment

    我一直在研究这个问题 并到处发现类似问题的参考资料 但尚未找到解决方案 我已经安装了 guest 2 2 11 和 nginx 0 7 64 当我启动并点击 Rails URL 时 我收到一个错误页面 通知我加载错误 没有要加载的文件 pa
  • 按下“Ctrl + C”按钮处理 C# 控制台应用程序

    如何处理同时按下的两个按钮 Ctrl C 不是在 WindowsForms 应用程序中 而是在控制台 C 应用程序中 我怀疑你想设置Console TreatCtrlCAsInput http msdn microsoft com en u
  • UIBarButton 没有改变

    IBOutlet weak var playStopButton UIBarButtonItem var playStopArray UIBarButtonSystemItem Pause UIBarButtonSystemItem Pla
  • pandas udf showString 简单示例错误

    我开始在使用此 身份 pandas udf 在 EMR 集群上运行的 Pyspark Jupyter 笔记本上使用 pandas udf 并且收到以下错误 pandas udf df schema PandasUDFType GROUPED
  • 批量将文件从子文件夹移动到父文件夹

    这是我的场景 这是我的文件夹结构 C DOCS Project1 docname1 image jpg docname2 image jpg docname3 image jpg C DOCS Project2 docname1 image
  • 什么样的面试问题适合 C++ 手机屏幕?

    很想了解人们的想法 我经常进行采访 在我的职业生涯中已经有足够多的时间来反思这些采访 并且我注意到了各种各样的问题 我专门做了这个 C 但值得注意的是 有人通过电话问我算法复杂性问题 我什至不是指哈希查找与二叉树的复杂性 我的意思更像是分析