0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

美图面试C++工程师的经历

工程师人生 来源:工程师吴畏 2019-06-26 16:55 次阅读

上周去美图公司面试C++工程师 有两位面试官

一位面试官问了一些数据结构相关的问题 另一位面试官则问了一些项目相关的问题

交流比较顺畅 和他们的交流也反馈给我一些信息 原来工作中有些地方可以做的更好

比如代码的耗时点的评估

问到数据结构时 面试官问了我这样一个问题

1. 求两个二叉树的子节点的最低公共父节点?

这个问题当时我是这样回答的:递归向上寻找父节点 每一个父节点又各自向下递归寻找另一个要寻找的子节点。 这个做法无疑是低效的。面试官教我这样一种方法:两个子节点都向上递归到根节点 然后逐个验证两条路径中的每个节点是否是公有节点 直到寻找到最低节点。

这个方法明显比我的要聪明不少,另外我查了些资料 其实这个问题还有其他解法

1. 中序遍历

2. 后序遍历

为什么可以用这两种方法呢?

因为两个子节点的公共父节点必定在他们的中间!这是个容易得出的规律。

中序遍历时 按顺序遍历 左 根 右节点

后序则是 左 右 根节点

按照这种方法可以大概圈定出公共节点的范围 再采用递归寻找会快些。

2. 求最小的k个数

这个问题我是这样答的:建立小顶堆 然后拿走堆顶节点后再调整堆为小顶堆

这样的话开销在于 第一次小顶堆的建立

后序每次小顶堆的重调整(开销不像第一次建立那么大)

这一题面试官似乎不是很满意答案 但是我回来想了下 网上能查到的还有用快排实现的

实际上也是用的递归快排 开销也不低 这个问题可能还得再想想。

工程相关的问题:

1. 关于框架的跨平台

这个问题主要也就是回答了下怎么把C++的框架代码应用到Androidios

关于Android方面的我熟悉一些 简单讲了下C调用Java,Java调用C的方法。

以及对应的C++接口阻塞/非阻塞 Java监听C代码的回调这些

ios就简单介绍了下自己用过的Object-C/C++混合编程

2. 关于代码的耗时点

这和我原来的想法有点不一样

原来我认为的优化是通过在代码里替换高IO代码为arm汇编来提高效率

但实际上好像没有这样做

另外面试官还提到了用工具来分析代码性能 我查了一下有不少开源实现

这个要关注一下。 原来的分段式分析耗时的方法还是比较落后 效率比较低一些。

总结

美图的威廉希尔官方网站 实力还是过硬的 原先参加过的面试 基本只问些项目相关的逻辑实现

这次面试问了不少基础相关的问题 不少基础没打扎实 要研究清楚来。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1570

    浏览量

    68514
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73636
  • 美图
    +关注

    关注

    0

    文章

    77

    浏览量

    8101
收藏 人收藏

    评论

    相关推荐

    面试题】人工智能工程师高频面试题汇总:机器学习深化篇(题目+答案)

    随着人工智能威廉希尔官方网站 的突飞猛进,AI工程师成为了众多求职者梦寐以求的职业。想要拿下这份工作,面试的时候得展示出你不仅威廉希尔官方网站 过硬,还得能解决问题。所以,提前准备一些面试常问的问题,比如机器学习的那些算法
    的头像 发表于 12-16 13:42 1919次阅读
    【<b class='flag-5'>面试</b>题】人工智能<b class='flag-5'>工程师</b>高频<b class='flag-5'>面试</b>题汇总:机器学习深化篇(题目+答案)

    面试题】人工智能工程师高频面试题汇总:Transformer篇(题目+答案)

    随着人工智能威廉希尔官方网站 的突飞猛进,AI工程师成为了众多求职者梦寐以求的职业。想要拿下这份工作,面试的时候得展示出你不仅威廉希尔官方网站 过硬,还得能解决问题。所以,提前准备一些面试常问的问题,比如机器学习的那些算法
    的头像 发表于 12-13 15:06 493次阅读
    【<b class='flag-5'>面试</b>题】人工智能<b class='flag-5'>工程师</b>高频<b class='flag-5'>面试</b>题汇总:Transformer篇(题目+答案)

    人工智能工程师高频面试题汇总——机器学习篇

    随着人工智能威廉希尔官方网站 的突飞猛进,AI工程师成为了众多求职者梦寐以求的职业。想要拿下这份工作,面试的时候得展示出你不仅威廉希尔官方网站 过硬,还得能解决问题。所以,提前准备一些面试常问的问题,比如机器学习的那些算法
    的头像 发表于 12-04 17:00 844次阅读
    人工智能<b class='flag-5'>工程师</b>高频<b class='flag-5'>面试</b>题汇总——机器学习篇

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    用二创,1:1复刻工程师的职场现状

    工程师
    扬兴科技
    发布于 :2024年07月19日 18:30:07

    嵌入式软件工程师和硬件工程师的区别?

    。他们之间的紧密合作对于成功开发出高效的嵌入式系统至关重要。 嵌入式软件工程师和嵌入式硬件工程师在工作中有着不同的技能要求和专业知识。嵌入式软件工程师需要具备扎实的编程基础,熟练掌握C
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    C++简史:C++是如何开始的

    MISRA C++:2023,MISRA® C++ 标准的下一个版本,来了!为了帮助您做好准备,我们介绍了 Perforce 首席威廉希尔官方网站 支持工程师 Frank van den Beuken 博士撰写
    的头像 发表于 01-11 09:00 586次阅读
    <b class='flag-5'>C++</b>简史:<b class='flag-5'>C++</b>是如何开始的