男生找男友:我希望你至少是0.628,如果是0.942那就更好了。

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推多家公司面试
[Google级团队]:实时大数据分析领域践行者
北京/深圳-大数据/搜索/机器学习职位
日志易机器大数据行业践行者Web/大数据/机器学习等职位-北京or深圳
把贵司招聘信息放这里
查看: 2114|回复: 0
收起左侧

12/02 Arista电面

[复制链接] |试试Instant~ |关注本帖
AnthonyNeu 发表于 2015-12-5 07:13:14 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类General 硕士 全职@Arista - 校园招聘会 - 技术电面  | Fail | fresh grad应届毕业生

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

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

x
面了两轮,第一轮是on campus,问的问题很简单:
-google 1point3acres
1. Java的abstract class和interface的区别
2. Java overwriting和overloading的区别
3. Java的final method有什么作用
4. 用C写binary search tree successor.鐣欏璁哄潧-涓浜-涓夊垎鍦

第二轮是software manager的电面,和之前的面经一样是ssh到他们的服务器上面去用vim写代码。

1. 给了一个简单的程序
int main(int argc, char * argv){
    for (int i = 0; i < argc; i++) {
         printf("%s\n", argv[i]);
    }
} 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

编译执行之后出现了segmetation fault。面试官要求我用gdb打出程序的call stack,并且分析其中的错误。
然后在打出call stack之后问我print argv[i]打印出来的变量的地址是virtual address还是physical address, virtual address是在编译程序的时候分配的还是执行的时候分配的,如何通过virtual address计算physical address。

2. 实现一个stack,这个题目是可以选择C++的。面试官首先问我如何写出pop function的接口,使得stack里面能够存任何数据类型。 我写了 int push(struct stack_elm_t ** top, void * value, int length),返回值是-1表示error, 0表示成功,length表示数据的长度。
因为我是用linkedlist实现的,首先我写stack中每个node的结构体:. 1point3acres.com/bbs
typedef struct _stack_elm {
   void *value;
   struct _stack *prev;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
} stack_elm_t;

然后面试官问我要是我们不想在pop function里面传** top的话,应该怎么办?而且我们可能在初始化stack的同时已经固定了数据的长度。 经过他的提示,大致的意思是需要写一个新的结构体存stack的基本信息,包括现在的栈顶和每个value的长度:. 1point3acres.com/bbs

typedef struct _stack {
   struct _stack_elm * top;
   int length;
} stack_t;


之后我实现了peek, create, push三个function, 大致的代码如下(可能会有一些错误):

typedef struct _stack_elm {. 1point 3acres 璁哄潧
   void *value;
   struct _stack_elm *prev;
} stack_elm_t;


typedef struct _stack {
   struct _stack_elm * top;
   int length;
} stack_t;


stack_t* create(int length) {
   stack_t * s = (stack_t *) malloc ( sizeof (stack_t));. more info on 1point3acres.com
   s->length = length;
. 鍥磋鎴戜滑@1point 3 acres   return s;
}
-google 1point3acres
void pop(stack_t * s) {
   if ( s == NULL || s->top == NULL) {
      return NULL;. 鍥磋鎴戜滑@1point 3 acres
   }
   stack_t * current = s->top;
   s->top = s->top->prev;
   free(current->value);. From 1point 3acres bbs
   free(current);
}

void * peek(stack_t * s) {
   if ( s == NULL || s->top == NULL) {
鏉ユ簮涓浜.涓夊垎鍦拌鍧.       return NULL;
   }
   return s->top->value;
}

int push(stack_t * s, void * value) {
   if ( s == NULL ) {
      return -1;
   }
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴   temp = ( stack_elm_t * ) malloc ( sizeof( stack_elm_t ));
   temp->val = ( void *) malloc(s->length);
   memcpy(temp->value, value, s->length);
. Waral 鍗氬鏈夋洿澶氭枃绔,   temp->prev = s->top;
   s->top = temp;
   return 0;. 1point3acres.com/bbs

}

.1point3acres缃

面完这道题之后就花了一个小时,然后面试官说我们休息一下。过了五分钟,他和我说我挂了,可能觉得我对C不是很熟悉。

评分

4

查看全部评分

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-4-22 16:46

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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