zoukankan      html  css  js  c++  java
  • 美团面试-2020-11-11

    这次面试主要分为三部分:

    1、介绍项目

    2、基础知识

    3、现场写代码

    第一部分:

    介绍项目,这部分会问的很详细,包括:线程模型、架构、数据交互、网络,如何查找内存泄漏。

    第二部分:

    select和epoll区别,边缘触发、水平触发,惊群(这个词没听过),如何创建线程,线程之间的通信方式,sleep函数为啥会耗时(具体有哪些方式)。

    第三部分:

    (1)内存拷贝,但是可能存在src和dest重叠的情况,需要分别讨论。

    void *memmove(void* dest, void* src, int count) {
        if (src == dest) return dest;
        void *tmp = dest;
        
        if (src > dest || (int*)dest + count < src) {
            int i = 0;
            while(i < count) {
                *((char*)dest+i) = *((char*)src+i);
                i++;
            }
        } else {
            while(count--) {
                *((char*)dest+count) = *((char*)src+count);
            }
        }
        return tmp;
    };

    (2)给定无序数组,找到前k大的数。

    #include <iostream>
    #include <random>
    #include <queue>
    using namespace std;
    
    
    void getValue(vector<int>arr, int k) {
        if(k >= arr.size()) return ;
        priority_queue<int, vector<int>, greater<int>> pq;
        for (int i = 0; i < k; i++) {
            pq.push(arr[i]);
        }
    
        for (int i = k; i < arr.size(); ++i) {
            if (pq.top() < arr[i]) {
                pq.pop();
                pq.push(arr[i]);
            }
        }
        
        while(pq.size()) {
            cout << pq.top() << endl;
            pq.pop();
        }
        return ;
    }
    
    
    int main() {
        vector<int> arr = {1,2,3,4,5};
        getValue(arr, 3);
        
        return 0;
    }
  • 相关阅读:
    Python matplotlib基本设置
    Python可视化工具
    使用Python进行数据分析——常见实用的第三方库
    Python第三方库安装
    Python pip的安装
    Python cx_Oracle数据库连接
    Python安装使用(WinXP)
    大数据学习路线(转载)
    SQL 数据库学习之路-转自大神笔记
    Java字符串处理函数汇总
  • 原文地址:https://www.cnblogs.com/xiaohaigegede/p/13961462.html
Copyright © 2011-2022 走看看