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

    文章

    1553

    浏览量

    67495
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72899
  • 美图
    +关注

    关注

    0

    文章

    77

    浏览量

    7968
收藏 人收藏

    评论

    相关推荐

    如何入门硬件工程师

    想跨行业做硬件设计工程师,应该如何学习规划呢
    发表于 03-17 21:49

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

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

    如何搞崩一个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    #人工智能 #FPGA 怎么成为一个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01

    电子工程师第一天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12

    硬件工程师面试时最常被问到的8个问题,看看你能答对几个

    晶振硬件工程师
    扬兴科技
    发布于 :2023年12月08日 18:21:15

    硬件工程师经典面试题详解

    硬件工程师经典面试题详解
    的头像 发表于 11-20 15:08 749次阅读
    硬件<b class='flag-5'>工程师</b>经典<b class='flag-5'>面试</b>题详解

    FPGA工程师需要具备哪些技能?

    各种通信协议的概念、协作流程、帧结构等。常见的通信协议包括UART、SPI、I2C、USB、PCIe、以太网等。 FPGA工程师还需要了解如何使用各种协议的开源库和硬件IP核,这些可以在互联网
    发表于 11-09 11:03

    【社区之星】彭仲维:扎实的基本功与时间的沉淀才是工程师成功的关键!

    入了电子行业。 社区小助手:作为一名从业多年的工程师,能否分享你的工作经历和一些比较成功的工程项目或优秀作品?开发这个产品的整个过程,有什么记忆深刻的经历吗? 彭仲维老师: 一体式胎心
    发表于 10-13 14:15

    #FPGA 本科生也能成为FPGA研发工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年09月23日 08:05:36

    电子工程师必看书籍推荐#知识分享 #知识科普 #交流#硬声创作季

    电子工程师
    也许吧
    发布于 :2023年05月24日 10:47:34