注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
Radix Trading是一家很小的trading firm,猎头联系到我我就面了一下。
第一轮电面:一开始当然还是互相做自我介绍。问了两个题目,一个是reverse singly linked list,一个是implement shared_ptr。- template<class T>
- Class SharedPtr {
- T* rawPtr;
- int* refCount;
- public:
- SharedPtr() {
- rawPtr = NULL;
- refCount = NULL;
- }
- SharedPtr(T* p) {
- rawPtr = p;
- refCount = new int(1);
- }
- SharedPtr(const SharedPtr& sp) {
- rawPtr = sp.rawPtr;
- refCount = sp.refCount;
- (*refCount)++;
- }
- ~SharedPtr() {
- (*refCount)--;
- if((*refCount) == 0) {
- delete refCount;
- delete rawPtr;
- }
- }
- T& operator=(const SharedPtr& sp) {
- if (refCount != NULL) {
- (*refCount)--;
- if((*refCount) == 0) {
- delete refCount;
- delete rawPtr;
- }
- }
- rawPtr = sp.rawPtr;
- refCount = sp.refCount;
- (*refCount)++;
- return *this;
- }
- T& operator*() {return *rawPtr;}
- T* operator->() {return rawPtr;}
- }
复制代码 当时写的code有两个小bug: 一是在destruct的时候如果refCount指针所指向的count的值是0那么应该destructrefCount,二是assignment operator应该尝试去首先判断原来的t face="Calibri">Angle。最后是实现一个简单的malloc, free。- Given a global buffer:
- char memory[4096];
- Implement:
- void* rdx_malloc(int bytes);
- void rdx_free(void* p);
- 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." - 不知道是什么鸟意思……
|