📣 独立日限时特惠: VIP通行证立减$68
回复: 17
跳转到指定楼层
上一主题 下一主题
收起左侧

今天下午电面了谷歌,面试官和我都震怒了

 
全局:
今天下午电面了谷歌,面试官和我都震怒了
分享我今天的奇葩经历,欢迎大家吐槽(谷歌)

下午2点的时候开始,一个东南亚口音,口语跟我一样蹩脚的小哥给我打电话,一上来就要做题,可是那题目画风越看越不对(见附件)。

我记得之前投简历以及和HR沟通的时候说的很清楚,我希望找一个Machine Learning / Deep Learning / Full-stack的相关工作,可是今天的题目为什么是嵌入式+C语言多线
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
样的门槛。虽然我有着4年的硬件和固件研发的丰富经验(误),但依然没看懂题目到底是让我干什么的。











补充内容 (2018-11-21 17:31):
是晚上骑车的时候,不是开车 :)

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 44大米 +245 收起 理由
vivivic + 2 很有用的信息!
yoyou1988 + 3 给你点个赞!
carol987 + 3 给你点个赞!
dengwx11 + 3 给你点个赞!
whdawn + 90

查看全部评分


上一篇:脸书 DE 挂经
下一篇:脸书面经另外求match求打捞
推荐
Killua1222 2018-11-22 00:03:51 | 只看该作者
全局:
看得好生气,HR怕不是公司里最清闲的职位了吧?就安排个电面还能搞错,是有多废物

补充内容 (2018-11-30 04:24):
只有楼主一个人有权决定经历了一通折腾后还选择体谅HR。别人无权替楼主决定,毕竟不是你被安排错电面瞎折腾一通。

评分

参与人数 3大米 +13 收起 理由
masa + 5 严禁人身攻击、脏话、戾气,屡犯会被封号!
by21bzhaolei321 + 5 给你点个赞!
winter1120 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
magicsets 2018-11-22 06:48:49 | 只看该作者
全局:
这题目本身还是挺有意思的,主要是考怎么把功能受限的基础调用包装成更具表达能力的上层抽象,属于“造轮子”的一类题目,不过确实和ML/DL没什么关系就是..

我写了一份参考代码:
  1. #include <algorithm>
  2. #include <atomic>
  3. #include <chrono>
  4. #include <cstdint>
  5. #include <functional>
  6. #include <iostream>
  7. #include <mutex>
  8. #include <queue>
  9. #include <thread>

  10. void handle_hw_timer();

  11. ////////////////////////////////////////////////////////////////////////////////
  12. ///////////////////// 题目所提供的系统调用,这里用简易实现模拟了一下 ///////////////////
  13. ////////////////////////////////////////////////////////////////////////////////
  14. // (这个函数不用自己实现)
  15. std::int64_t get_current_time() {
  16.   const auto now = std::chrono::high_resolution_clock::now();
  17.   const auto ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
  18.   return ms.time_since_epoch().count();
  19. }

  20. // (这个函数不用自己实现)
  21. void set_hw_timer(int relative_timeout_ms) {
  22.   static std::atomic<std::size_t> counter(0);
  23.   const std::size_t serial = counter.fetch_add(1) + 1;
  24.   std::thread t([relative_timeout_ms, serial] {
  25.     if (relative_timeout_ms > 0) {
  26.       std::this_thread::sleep_for(std::chrono::milliseconds(relative_timeout_ms));
  27.     }
  28.     if (counter.load() == serial) {
  29.       handle_hw_timer();
  30.     }
  31.   });
  32.   t.detach();
  33. }

  34. ////////////////////////////////////////////////////////////////////////////////
  35. ////////////////////////////////// 需要自己写的部分 ///////////////////////////////
  36. ////////////////////////////////////////////////////////////////////////////////

  37. // 定义timer结构体
  38. struct timer {
  39.   std::int64_t wake_ts;
  40.   void (*callback)();
  41. };

  42. struct timer_pointer_comparator {
  43.   bool operator()(const timer *lhs, const timer *rhs) const {
  44.     return lhs->wake_ts > rhs->wake_ts;
  45.   }
  46. };

  47. // 这里如果是C语言,并且回调队列不会很长的话,也可以用链表结构
  48. std::priority_queue<const timer*,
  49.                     std::vector<const timer*>,
  50.                     timer_pointer_comparator> timer_events;
  51. std::mutex timer_events_mutex;

  52. // 处理callback并重置hardware timer.
  53. void handle_hw_timer() {
  54.   std::unique_lock<std::mutex> lock(timer_events_mutex);
  55.   const timer *event = timer_events.top();
  56.   timer_events.pop();
  57.   const bool is_empty = timer_events.empty();
  58.   lock.unlock();
  59.   std::thread worker([event] {
  60.     event->callback();
  61.   });
  62.   worker.detach();
  63.   if (!is_empty) {
  64.     const auto delta_ts = timer_events.top()->wake_ts - get_current_time();
  65.     set_hw_timer(std::max(0ll, delta_ts));
  66.   }
  67. }

  68. // 注册新callback
  69. void set_timer(struct timer *t, int relative_timeout_ms, void (*callback)()) {
  70.   t->wake_ts = get_current_time() + relative_timeout_ms;
  71.   t->callback = callback;
  72.   std::lock_guard<std::mutex> lock(timer_events_mutex);
  73.   timer_events.push(t);
  74.   const auto delta_ts = timer_events.top()->wake_ts - get_current_time();
  75.   set_hw_timer(std::max(0ll, delta_ts));
  76. }

  77. ////////////////////////////////////////////////////////////////////////////////
  78. ////////////////////////////////////// 测试 /////////////////////////////////////
  79. ////////////////////////////////////////////////////////////////////////////////

  80. int main(int argc, char *argv[]) {
  81.   struct timer t1, t2, t3;

  82.   set_timer(&t1, 2000, [] { std::cout << "Hello -- A.2\n"; });
  83.   set_timer(&t2, 3000, [] { std::cout << "Hello -- A.3\n"; });
  84.   set_timer(&t3, 1000, [] { std::cout << "Hello -- A.1\n"; });

  85.   std::this_thread::sleep_for(std::chrono::seconds(1));

  86.   struct timer t4, t5, t6;

  87.   set_timer(&t4, 2000, [] { std::cout << "Hello -- B.3\n"; });
  88.   set_timer(&t5, 3000, [] { std::cout << "Hello -- B.4\n"; });
  89.   set_timer(&t6, 1000, [] { std::cout << "Hello -- B.2\n"; });

  90.   std::this_thread::sleep_for(std::chrono::seconds(5));
  91. }
复制代码

评分

参与人数 4大米 +29 收起 理由
psyche202 + 3 很有用的信息!
whdawn + 20
Eloise + 3 给你点个赞!
圆滚滚的panda + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
OCIArch 2018-11-22 05:42:51 | 只看该作者
全局:
加米,安抚一下。也体谅一下HR吧,他/她们也不容易,每天不知道要安排多少面试,忙中出错的概率也是有的。
回复

使用道具 举报

🔗
c.zhang 2018-11-21 17:49:59 来自APP | 只看该作者
全局:
心疼楼主。。先好好睡一觉吧 还是生命比较重要。。
回复

使用道具 举报

🔗
三亩三分地 2018-11-21 18:33:13 | 只看该作者
全局:
不厚道的笑了
回复

使用道具 举报

全局:
为什么我想笑,哈哈哈哈哈哈,祝小哥面试成功进谷歌
回复

使用道具 举报

全局:
心疼楼主 好好休息休息 后面会安排重面的
回复

使用道具 举报

🔗
bxsz 2018-11-22 04:14:52 | 只看该作者
本楼:
全局:
所以题呢
回复

使用道具 举报

🔗
 楼主| 我是那谁 2018-11-22 05:10:37 | 只看该作者
全局:

题目粘在了附件里啊,没有看到吗。
而且一不小心还粘了两遍,还不知道怎么删。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表