美图 C/C++工程师 面试总结

技术面试

上周去美图公司面试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汇编来提高效率
    但实际上好像没有这样做 
    另外面试官还提到了用工具来分析代码性能 我查了一下有不少开源实现
    这个要关注一下. 原来的分段式分析耗时的方法还是比较落后 效率比较低一些.

总结

美图的技术实力还是过硬的 原先参加过的面试 基本只问些项目相关的逻辑实现
这次面试问了不少基础相关的问题 不少基础没打扎实 要研究清楚来.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是一个简单的美图网页的HTML及CSS代码,你可以根据自己的需求进行修改和优化: HTML代码: ``` <!DOCTYPE html> <html> <head> <title>美图网页</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <header> <h1>美图网页</h1> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">分类</a></li> <li><a href="#">最新</a></li> <li><a href="#">热门</a></li> </ul> </nav> </header> <main> <section class="gallery"> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图1"> <p>美图1</p> </div> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图2"> <p>美图2</p> </div> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图3"> <p>美图3</p> </div> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图4"> <p>美图4</p> </div> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图5"> <p>美图5</p> </div> <div class="image"> <img src="https://placekitten.com/200/200" alt="美图6"> <p>美图6</p> </div> </section> </main> <footer> <p>版权所有 © 2021 美图网页</p> </footer> </body> </html> ``` CSS代码: ``` body { margin: 0; padding: 0; font-family: Arial, sans-serif; } header { background-color: #333; color: #fff; padding: 20px; display: flex; flex-direction: row; justify-content: space-between; align-items: center; } nav ul { list-style: none; display: flex; flex-direction: row; } nav ul li { margin: 0 10px; } nav ul li a { color: #fff; text-decoration: none; } main { max-width: 1000px; margin: 50px auto; } .gallery { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 20px; } .image { position: relative; } .image img { width: 100%; height: 100%; object-fit: cover; } .image p { position: absolute; bottom: 10px; left: 10px; color: #fff; font-size: 20px; font-weight: bold; } ``` 以上代码实现了一个简单的美图网页,包括一个顶部导航栏、一个图片展示区域以及一个底部版权信息。你可以根据需要进行修改和定制,例如更改颜色、添加动画效果等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值