前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这才是面试官想听到的答案,C++er必须得看看

这才是面试官想听到的答案,C++er必须得看看

作者头像
程序员的园
发布2024-07-18 13:12:20
520
发布2024-07-18 13:12:20
举报
文章被收录于专栏:程序员的园——原创文章

如果知道我会死在哪里,那我将永远不去那个地方 ——查理 芒格

提示

如下为真实面试环节的对话,可以先不看最后的解答,自己想想该如何回答该问题。

C++智能指针的根本思想是什么

这个还真没有研究过,不清楚

被面试者

那我换一个问题吧,我有一个耗时函数,需要统计耗时该如何做

在函数的开始位置记录下当前时刻,在函数的结尾处再次记录下当前时刻,两者做差即为函数耗时。

被面试者

如果这个函数有很多return语句,并且我也不知道函数从哪里返回,又该如何做

使用goto语句,修改每个return语句为goto,使其走到指定位置,计算退出前的函数

被面试者

那如果有100个return,便需要修改100个位置呀,如果遗漏一个便统计遗漏

那我还想不到了

被面试者

可以通过自定义类或函数的形式,你可以再想想。

被面试者思考良久没有结果,由于时间关系,我便讲了出来。也希望他能够在这个面试环节能够学到一点东西。

谁人不是面试官,谁人又何尝不是被面试者呢,将人问倒、炫耀自己的技术有多么NB从来不是目的,了解被面试者的知识面和知识深度,并进行岗位匹配才是这场面试的目的,如果能够相互学习点东西那简直是再好不过了。

如果函数有100个return,如何求函数耗时

其实就是定义一个类,在构造函数中函数中记录下当前时刻的时间,在析构函数内再次记录当前时刻,两个时间的差值就可以计算出耗时。如果该类的对象定义在函数的起始位置,那统计的就是函数的耗时。代码见后。

有人会说,这和智能指针的根本思想有什么关系呢。起始两者是同一个思想——RAII(Resource Acquisition Is Initialization),它是一种设计思想,即将资源的获取放在类的构造函数里,将资源的释放放在类的析构函数里。当对象的生命周期结束时,析构函数会自动被调用,相应的资源也会被自动释放。

代码语言:javascript
复制
#include <chrono>
#include<string>
class TimeCounter
{
public:
  TimeCounter(std::string name):m_name(name){
    m_start = std::chrono::high_resolution_clock::now();
  };
  ~TimeCounter(){
    auto stop = std::chrono::high_resolution_clock::now();
    auto dur = std::chrono::duration_cast<std::chrono::microseconds>(stop-m_start);
    auto dur_us = dur.count();
    std::cout<<"current object "<<m_name<<" exist time (us)"<<dur_us;
  }
  TimeCounter operator=(const TimeCounter&)=delete;
  TimeCounter(const TimeCounter& )=delete;
  TimeCounter operator=(const TimeCounter&&) = delete;
  TimeCounter(const TimeCounter&&) = delete;
private:
  std::string m_name{""};
  std::chrono::high_resolution_clock::time_point m_start;
};

void test_time_cost()
{
  TimeCounter tc1("function_test");

  int j =100;


  auto tc2 = std::make_shared<TimeCounter>("long_time_process");
  /*
  long time process
  */
  tc2.reset();
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档