微信日常实习面经(后台开发)

大概情况

今年(2019)11月的时候,港科大停课了。于是我们就回家上网课和考期末。意外看到微信在招实习生,就投了一下。(秋招的时候,拼多多签了正式岗,但是不给签两方的学生提前去实习)

PS: 需要从 Java 转 C++。面试的时候,面试官知道我不太会 cpp,就没怎么问这方面。

一面

上来先做题,第一题是判断平衡二叉树,第二题是对一个数求平方根,要求结果达到一定精度,参考 leetcode 69: https://leetcode-cn.com/problems/sqrtx/

接下来就问了计网的传输层,应用层;
堆内存和栈内存;(我用 JVM 的运行时数据区域水了一波)
linux 进程/线程模型;
死锁发生的条件和解决办法;
Redis 的持久化机制,还有内部数据结构 - 然后我讲了讲跳表;
CopyOnWrite 机制;
还有其他一下计网或者操作系统的知识,具体不太记得了;
简单的问了一下个人项目。

二面

也是上来先刷代码。(代码我是用 Java 来写的,下面的是题目)

1.

倒转单链表(在原链表上倒转)。
struct LinkNode {
    int value;
    struct LinkNode * next;
};
void reverseList( struct LinkNode * head );

2.

判断一个int是否为回文数,回文数定义为首位置和末尾一样,如1234321,123321。
bool check(int num);

leetcode 9: https://leetcode-cn.com/problems/palindrome-number/

3.

请实现LRU缓存类,Get、Set接口时间复杂度要求为O(1)

class LruCache
{
public:
    LruCache();

    // value返回key对应的数据,成功返回0,如果不存在,返回1
    int Get(int key, std::string& value);

    // 成功返回0,是吧返回-1
    int Set(int key, const string& value);

private:
    //请定义必要的存储参数
}

4.

有一份关键词列表,大小500M左右,如下:
比赛
中国
香港
腾讯
微信
...
现在输入一个句子,需要判断这个句子是否命中关键词列表里面某些词,请描述一下解决思路
比如输入:今天去腾讯的微信部门参加面试
输出:腾讯/微信

5.

下面代码有什么问题:
vector vec;
map int_map;
for (int i = 0; i < kMaxNum; ++i)
{
    vec.push_back(i);
    int_map[i] = &vec.back();
}


接下来就是问计网和操作系统的常见问题,比如 TCP 的最大报文段长度,IP 的分片等。
还有就是 linux 的常用命令。

HR面

过了两周,本来以为凉了,结果突然收到 HR 的电话。然后直接就是常规的 HR 面。
下午就收到了 offer call。

你可能感兴趣的:(微信日常实习面经(后台开发))