美图 C/C++工程师 面试总结
2018-03-05 00:12
267 查看
技术面试
上周去美图公司面试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汇编来提高效率 但实际上好像没有这样做 另外面试官还提到了用工具来分析代码性能 我查了一下有不少开源实现 这个要关注一下. 原来的分段式分析耗时的方法还是比较落后 效率比较低一些.
总结
美图的技术实力还是过硬的 原先参加过的面试 基本只问些项目相关的逻辑实现 这次面试问了不少基础相关的问题 不少基础没打扎实 要研究清楚来.
相关文章推荐
- c++开发工程师面试总结
- 12.20今日头条实习面试总结-算法工程师
- C++面试中常被问的sizeof问题总结
- 【面试总结】【远光软件】【java开发工程师】
- C/C++校招笔试面试经典题目总结二
- 面试总结 —— 高级JAVA工程师【转转转】
- 面试知识点总结之c++基础(一)
- C/C++校招笔试面试经典题目总结四
- [C++ 面试基础知识总结] 关联容器
- 关于C++一些面试题目的总结
- 腾讯面试题总结,似乎是面试C++方向的(小巫总结)
- 近期面试总结(PHP后端开发工程师)(部分笔试题)
- C/C++程序员 面试经历总结 .
- Java高级工程师面试总结
- 【ios开发工程师互联网名企面试】一个iOS程序员的BAT面试经验和知识点总结
- 面试总结 —— 高级JAVA工程师
- 面试笔试总结(一)之 C++基础
- [置顶] 【Java高级开发工程师】近一个月的面试总结
- 总结程序员面试之C C++
- 面试总结三---2015百度校园招聘长沙站前端工程师笔试面试经历