2015-10-11 [滴滴]--研发工程师--1~4面

时间:2015-10-11 14:10 ~ 18:20

地点:北京市海淀区东北旺西路8号院 尚东数字山谷 B区1号楼

 

一、1面

1. 问项目经验

2. 求整型数组中的最大子数组和

int get_max_sum(const vector<int> &nums)
{
    int ans = 0;

    if (nums.size() == 0)
        return 0;

    int cnt_val = nums[0];

    if (nums.size() == 1) {
        ans = ans > cnt_val ? ans : cnt_val;
        return ans;
    }

    for (int i = 1; i < nums.size(); i++) {
        if (cnt_val > 0)
            cnt_val += nums[i];
        else
            cnt_val = nums[i];
        ans = ans > cnt_val ? ans : cnt_val;
    }

    return ans;
}

int main()
{
    struct TestCase {
        vector<int> nums;
        int ret;
    } test_cases [] = {

        {
            { -1, -1, -1 },
            0
        },

        {
            { -1, -9, 10, -3, 19 },
            26
        },

        {
            { -1, 20, -9, 10, -3, 19 },
            37
        },

    };

    for (int iii = 0; iii < sizeof(test_cases) / sizeof(TestCase); iii++) {

        TestCase &tc = test_cases[iii];

        auto ret = get_max_sum(tc.nums);

        if ( tc.ret != ret ) {
            cout << "Case #" << iii << " failed" << endl;
            cout << "Actual ret=" << ret << endl;
            return -1;
        }
    }

    return 0;
}

 

二、2面

1. 线程安全

1.1 vector, list 是否是线程安全的?

 

1.2 对于链表,如何才能能使其线程安全?更高效的方案?

 

2. 算法题

N*M的矩阵,每个元素的值为0或1,如果两个元素之间有边或角相连,那么这两个点就是互通的,所有互通的1够成一块陆地,问:这个矩阵中有多少陆地?

 

三、3面

1. vector的存储格式,dequeue的存储格式

2. vector的增长方式。1 2 4 8 16 32 64 为什么?

http://www.zhihu.com/question/36538542

3. 查找链表中是否存在回路。证明之。

 

四、4面

hr谈未来规划,个人爱好

 

posted @ 2015-10-15 15:02  loverszhaokai  阅读(350)  评论(0编辑  收藏  举报