首页 / 行业
美图面试C++工程师的经历
2019-06-26 16:55:00
上周去美图公司面试C++工程师 有两位面试官
一位面试官问了一些数据结构相关的问题 另一位面试官则问了一些项目相关的问题
交流比较顺畅 和他们的交流也反馈给我一些信息 原来工作中有些地方可以做的更好
比如代码的耗时点的评估
问到数据结构时 面试官问了我这样一个问题
1. 求两个二叉树的子节点的最低公共父节点?
这个问题当时我是这样回答的:递归向上寻找父节点 每一个父节点又各自向下递归寻找另一个要寻找的子节点。 这个做法无疑是低效的。面试官教我这样一种方法:两个子节点都向上递归到根节点 然后逐个验证两条路径中的每个节点是否是公有节点 直到寻找到最低节点。
这个方法明显比我的要聪明不少,另外我查了些资料 其实这个问题还有其他解法
1. 中序遍历
2. 后序遍历
为什么可以用这两种方法呢?
因为两个子节点的公共父节点必定在他们的中间!这是个容易得出的规律。
中序遍历时 按顺序遍历 左 根 右节点
后序则是 左 右 根节点
按照这种方法可以大概圈定出公共节点的范围 再采用递归寻找会快些。
2. 求最小的k个数
这个问题我是这样答的:建立小顶堆 然后拿走堆顶节点后再调整堆为小顶堆
这样的话开销在于 第一次小顶堆的建立
后序每次小顶堆的重调整(开销不像第一次建立那么大)
这一题面试官似乎不是很满意答案 但是我回来想了下 网上能查到的还有用快排实现的
实际上也是用的递归快排 开销也不低 这个问题可能还得再想想。
工程相关的问题:
1. 关于框架的跨平台
这个问题主要也就是回答了下怎么把C++的框架代码应用到Android和ios上
关于Android方面的我熟悉一些 简单讲了下C调用Java,Java调用C的方法。
以及对应的C++接口阻塞/非阻塞 Java监听C代码的回调这些
ios就简单介绍了下自己用过的Object-C/C++混合编程
2. 关于代码的耗时点
这和我原来的想法有点不一样
原来我认为的优化是通过在代码里替换高IO代码为arm汇编来提高效率
但实际上好像没有这样做
另外面试官还提到了用工具来分析代码性能 我查了一下有不少开源实现
这个要关注一下。 原来的分段式分析耗时的方法还是比较落后 效率比较低一些。
总结
美图的技术实力还是过硬的 原先参加过的面试 基本只问些项目相关的逻辑实现
这次面试问了不少基础相关的问题 不少基础没打扎实 要研究清楚来。
最新内容
手机 |
相关内容
2023 年 3 季度了 DigiKey 新增 4
2023 年 3 季度了 DigiKey 新增 4 万多种现货零件,多种,零件,现货,季度,产品,原厂,全球领先的供应品类丰富、发货快速的商业现货技新一代8通道脑电采集芯片研制成功,
新一代8通道脑电采集芯片研制成功,铠侠与西部数据已中止合并谈判,合并,芯片,脑电,新一代,通道,产品,近日,一项重要的科技突破在全球范DigiKey 凭借品牌更新荣获四项 Mar
DigiKey 凭借品牌更新荣获四项 MarCom 大奖,四项,机构,明尼苏达州,公司,行业,产品,全球供应品类丰富、发货快速的商业现货技术元件芯朋微:服务器配套系列芯片已通过客
芯朋微:服务器配套系列芯片已通过客户验证 可应用于AI服务器,服务器,客户,芯片,验证,人工智能,公司,芯朋微是一家专注于人工智能芯片ASML不惧佳能纳米压印光刻机!
ASML不惧佳能纳米压印光刻机!,提升,分辨率,产品,公司,芯片,市场,佳能最近发布了一款被称为能够生产2纳米芯片的新一代纳米压印光刻机与GPU能效齐平,低功耗AI公司的转型
与GPU能效齐平,低功耗AI公司的转型,公司,低功耗,硬件,市场,能源,需求,随着人工智能(AI)技术的快速发展,对于低功耗AI公司的需求也越来越英伟达开发Arm架构PC处理器,英特尔
英伟达开发Arm架构PC处理器,英特尔迎来劲敌,PC处理器市场格局巨变!,处理器,市场,格局,英伟达,英特尔,能力,近日,全球领先的图形处理器(GP英伟达携手联发科打造CPU,威胁英特
英伟达携手联发科打造CPU,威胁英特尔主导地位,英特尔,威胁,英伟达,能和,公司,产品,英伟达(NVIDIA)和联发科(MediaTek)的合作计划已经引起