更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

京东面经:搜索部门 C++开发

  • 发布:C++培训
  • 来源:C++职场
  • 时间:2017-10-16 13:24

关于几面的问题:咨询了一些人,好像是分部门和岗位,大多数都只有二面,少数有三面。

下面是面经:

笔试

首先是会发一张卷子,先做笔试,题目大致如下:

1、实现一个memcpy,效率尽可能好

2、100万有序数据,是否存在两数之和等于给定值

3、求巨大数组的前K大的数

4、class里如何给引用类型成员初始化

5、C malloc出来的内存 可以调用delete吗?为什么

6、下面程序输出什么?为什么

class A

{

public:

void print()

{

fprintf(stderr,"hello,world\n");

}

};

int main()

{

A *p=0;

p->print();

}

7、简述一个简单的C/S通信程序的实现步骤

8、简述linux进程的内存布局

9、两个线程,共享一个整型变量,一个 ,一个--,最后输出这个变量的值,如何最大程度的提高并发能力?

这里不得不吐槽一下,在做笔试的时候,没有任何监管,周围好多人都直接拿手机查,好吧,这样做笔试有区分度吗?

做完笔试,等了大约一个小时,才轮到我面试:

一面

基本上就是对着试卷问了一遍,然后问能不能实习什么的,最后问我有什么想问的,楼主就问面试小哥是什么部门的,用什么语言多,因为楼主不想写java,面试小哥说是搜索部门,让我放心,是用的c

一面很快,10分钟左右,然后去吃饭,回来后1点40多,等了大概一小时

二面

对着简历问,由于我简历上说自己对网络编程比较熟悉,问了一大推网络编程的问题,下面总结一下,不一定是问的顺序:

1、看过muduo库?说一下muduo库的特点,以及自己学到了什么

2、你提到了线程池,说一下怎么实现的

3、设置过socket参数吗?具体说说

4、TCP流量控制手段,拥塞控制,TCP怎么判断发生了网络拥塞

5、RST知道吧,发送一个RST会发生什么?

6、进程(线程)通信有哪些手段?

7、文件描述符知道吧?同一个进程打开同一个文件两次,会发生什么?具体说说文件的底层数据结构

8、除了多线程,多进程用过吗?(楼主答知道一些概念fork等,没怎么用过)

好像还有其他的关于网络的问题,记不得了

之后让我说一下项目,由于实验室的项目的外包,java web,面试官好像不敢兴趣,全程没提什么问题

之后好像是实在没什么聊的,就在笔试题的基础上问了一些问题:

1、第五题你是怎么答的?(笔试答卷被一面面试官收走,所以二面没有)

我说从malloc 和 ew的区别入手,malloc只是申请内存,而且返回的是void*类型,而new分为两个步骤,一个步骤是申请内存,第二个步骤是调用构造函数进行初始化,所以不能调用delete,他说其实对于内置变量类型,是可以直接调用delete,这个我和他解释了一下,说对于内置变量类型比如 int p = new int[10];delete p 和delete []p是一样的,而对于用户自定义类型 obj p = new obj[10];则delete p 和 delete []p则不一样,就是说对于内置类型和自定义类型编译器处理的方式不一样

2、第六题你是怎么答的?

我说这题的考点应该是 A*p = 0;是相当于把p置为NULL,而NULL指针能不能调用成员函数。这个应该分为两种情况,一种情况是print没有使用类的成员变量,也就是没有对内存进行读写操作,这个时候是不会报错,可以正常运行,输出hello,如果print对成员变量进行的读写,则会报错。

因为对于普通成员函数,编译器会对其进行改名,使其调用方式和普通函数一样,所以虽然p为NULL,但是还是可以调用。

面试官问如果把print声明为虚函数呢?我思考了一下说这个时候会报错,因为p为NULL的时候,没有调用构造函数,所以并没有初始化vptr。

3、第九题怎么答的?

我说用C 11的原子变量,他不满意,说这样其实也是锁,只不过是底层实现的,比mutex更效率一些。我说我想不到其他方法。然后他提示了一下,说不一定非要对变量本身进行操作。这个时候我一下子明白了,原来题意是两个线程只对变量进行 --操作,没有其他,那完全可以在启动线程前,将变量的值赋值给两个变量,然后通过ref()的方式传给线程,最后将两个值相加即可,不需要加锁

最后说今天的面试结束了,所有人都是二面,我问了一下结果什么时候会出,他说他们会把面试情况报给公司,什么时候出他也不知道。我又问挂了话会有通知吗?他说应该没有通知了。

然后他好像给我进行打分,我瞄了一眼,好像是一个√一个×,感觉是GG了

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C++ 网络编程初学者的开源项目
下一篇:C++后台开发需要掌握哪些技术?

几个C语言经典基础算法(含代码)

不得不知道的八个C语言面试题

C/C++后台开发面试难不难,京东二面

C/C++后台开发面试难不难,来看看京东

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省