一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 779|回复: 3
收起左侧

Radix Trading电面跪经

[复制链接] |试试Instant~ |关注本帖
diyutianshi 发表于 2016-5-17 10:58:48 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 博士 全职@Radix Trading - 猎头 - 技术电面 |Fail在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
Radix Trading是一家很小的trading firm,猎头联系到我我就面了一下。
. 鍥磋鎴戜滑@1point 3 acres
第一轮电面:一开始当然还是互相做自我介绍。问了两个题目,一个是reverse singly linked list,一个是implement shared_ptr
  1. template<class T>
  2. Class SharedPtr {
  3.    T* rawPtr;
  4.    int* refCount; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  5. public:
  6.    SharedPtr() {
  7.        rawPtr = NULL;
  8.        refCount = NULL;
  9.    }.1point3acres缃
  10.    SharedPtr(T* p) {
  11.        rawPtr = p;
  12.        refCount = new int(1);
  13.    }. 1point3acres.com/bbs
  14.    SharedPtr(const SharedPtr& sp) {
  15.        rawPtr = sp.rawPtr;
  16.        refCount = sp.refCount;
  17.        (*refCount)++;
  18.    }
  19.    ~SharedPtr() {
    . Waral 鍗氬鏈夋洿澶氭枃绔,
  20.        (*refCount)--;
  21.        if((*refCount) == 0) {.1point3acres缃
  22.            delete refCount;
  23.            delete rawPtr;
  24.        }
  25.    }
  26.    T& operator=(const SharedPtr& sp) {
  27.        if (refCount != NULL) {
  28.            (*refCount)--;
  29.            if((*refCount) == 0) {
  30.                delete refCount;
  31.                delete rawPtr;
  32.            }
  33.        }
  34.        rawPtr = sp.rawPtr;
  35.        refCount = sp.refCount;
  36.        (*refCount)++;
  37.        return *this;
  38.    }. 鍥磋鎴戜滑@1point 3 acres
  39.    T& operator*() {return *rawPtr;}
  40.    T* operator->() {return rawPtr;}
  41. }
复制代码
当时写的code有两个小bug: 一是在destruct的时候如果refCount指针所指向的count的值是0那么应该destructrefCount,二是assignment operator应该尝试去首先判断原来的target pointer是否有值,这样的话就需要实现另外一个constructorrawPtrrefCount都初始化为NULL,如果有的话那么需要decrement refCount再重新做类似于copy constructorassignment,其他的都还是挺好的。程序并不难写,逻辑也很简单,不过写一次还是觉得好很多。此外还有一点要注意的是assignment operator返回的应该是这个smart pointer的一个reference,因此应该用return *this而不是return this;. From 1point 3acres bbs

. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
. from: 1point3acres.com/bbs
第二轮电面:一开始是这哥们简单的做了个自我介绍,然后就面了一个判断一个字符串是否是palindrome,在他的提示下改了一下函数声明(const string& str),然后是让我从Temperature, Angle, Fixed point numbers中任选一个实现这个class,只要写函数声明,不用实现具体的函数,基本上就是要定义一个enum Type然后写一堆constructor, copy constructor, operator overloading以及conversion之类的东西,我挑了Angle。最后是实现一个简单的malloc, free
  1. Given a global buffer:
  2. char memory[4096];
  3. . 1point3acres.com/bbs
  4. Implement:
  5. void* rdx_malloc(int bytes);
  6. void rdx_free(void* p);
  7. That allocate from and return memory to that buffer.
复制代码
后来等了很久以后recruiter说我被拒了,feedback是……"Youanswered the questions, well and very fast. They would have liked you to a bitthrough with some of your answers covering all bases." - 不知道是什么鸟意思……

评分

1

查看全部评分

 楼主| diyutianshi 发表于 2016-5-17 10:59:16 | 显示全部楼层
第二题的code不知道为啥没了……
  1. map<pair<int, int>> m;
  2. void* rdx_malloc(int bytes) {. Waral 鍗氬鏈夋洿澶氭枃绔,
  3. if (m.empty()) {
  4.    if (bytes > 4096) return NULL;
  5.    else {
  6.      m.insert(make_pair(0, bytes));
  7.      return (void*)memory;
  8.    }
  9. }
  10. else {.鏈枃鍘熷垱鑷1point3acres璁哄潧
  11.    int start = 0;
  12.    for (auto p : m) {
  13.      if (p.first - start >= bytes) {. visit 1point3acres.com for more.
  14.        m.insert(make_pair(start, bytes));. visit 1point3acres.com for more.
  15.        return (void*) (memory + start);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  16.      }
  17.      start = p.first + p.second;
  18.    }
  19.    if (4096 - start >= bytes) {.1point3acres缃
  20.      m.insert(make_pair(start, bytes));
  21.      return (void*) (memory + start);
  22.    }
  23.    return NULL; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  24. }. from: 1point3acres.com/bbs
  25. void rdx_free(void *p) {.鐣欏璁哄潧-涓浜-涓夊垎鍦
  26. int offset = (char *)p - memory;
  27. map<int,int>::iterator it = m.find(offset);
  28. if (it != m.end()) {
  29.    m.erase(it);
  30. }
  31. }
复制代码
回复 支持 反对

使用道具 举报

menderr 发表于 2016-5-18 04:26:55 | 显示全部楼层
这回复啥意思啊,完全没明白
回复 支持 反对

使用道具 举报

leo817 发表于 2016-5-18 12:19:21 | 显示全部楼层
这语法有点难以捉摸啊 不过楼主move on吧 加油
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-3 02:56

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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