面经1

  • 一面——电话面,申请职位:Linux后端开发工程师

1.介绍自己,主要说明了网络管理平台的流量控制和调度算法;

2.Linux基本命令:awk,find,grep;

3.C++ virtual关键字,多态;

4.多集合找top n,利用堆的数据结构;

5.多路归并,加入自己的额外想法;

6.map和unordered_map的内部实现以及使用场合;

7.大数据查找,海量数据,如何查找整数k是否在其中(第一想法:bitmap,第二想法:基数排序分成小文件,缩小查找范围)

8.STL中vector的内部实现以及使用过程中需要注意的问题。

  • 二面——现场,职位Linux后端

1.简要介绍自己,重点讨论了一下调度算法;

2.singleton(单例模式),注意线程安全;

3.对于线程安全谈一下自己的理解,如果让你自己去写一个类的话;

4.C++多态的实现方式,虚函数表+继承+指针/引用动态绑定;

5.面试官现场写了两个类A和B:public A,如下:

    class A{

    };

   class B:public A{

   }; 

    1)首先问编译器会自动为A实现那些函数:

我的回答:构造函数,析构函数,拷贝构造函数,operator =,operator &

   2)继续追问这样写存在的潜在问题:

我的回答:A作为基类,A的析构函数应该声明为虚函数virtual

   3)进一步追问:在A类内部加上virtual ~A ()= 0;

    即使A成为纯虚类,并且不实现析构函数,这样做会有问题么,

我的回答:最初认为没有问题,(面试官要求分析一下)但是想到编译完成,链接器执行链接的时候需要找~A的函数入口,编译是不会通过的。

6.比较简单的一道编程题目:

给定a,b,c三个数,和如下三个限制条件:

1).0<=a<=1.0,0<=b<=1.0,0<=a<=1.0;

2).递增步长step=0.5

3).a+b+c = 2

要求打印出所有满足情况。

我的回答:三重for循环枚举所有情况,满足时输出;

追问:步长可变的话程序应该怎么更改,

我的回答:加入参数step,使其作为输入使用,

追问:步长改为0.3,程序有什么能改进的

我的回答:没想到。。。

面试官:改为0.3就没有可行解了,直接跳出就行因为2.0无法被0.3整除,所以程序应该有一个预先判断;

7.简要说明一下自己对于分词问题的理解,并简述几种方法:

我的回答:首先说了一下动态规划分词的方法,另一种说了一下《数学之美》中介绍的统计分词;

8.如何使分词变得更为准确,如果用户输入A,B两个关键词,如何在索引中返回对应的查询链接?

9.搜索时出现同意词如何进行区分?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值