tplink软件开发工程师面经

总结


tplink面试流程也算是完整走完了,之前在牛客上学习了很多东西,甚是感激.今天我也来分享分享我的面试经历.
tplink的一面和三面都是以聊天为主,面试官主要是会根据简历来问问题,所以建议大家对于写在简历上的内容一定要十分熟悉,做到有话可说.其次面试官也会问成绩,在校经历等问题.
tplink的二面考察了算法题目,这一部分我仔细记录了一下,写在下面,供大家参考.


总的来说这次面试是一次愉快的经历,tp的面试流程推进的非常快,面试官们都很好.最后希望大家也能拿到心仪的offer~

二面

问了简历上的项目

第一题: 2n个数里只有两个数出现一次,其它数都出现了两次,问怎么找到这两个数(leetcode 260)

题解:

class Solution {
public:
    vector singleNumber(vector& nums) {
        int num1 = 0, num2 = 0; 
        for(auto i : nums){
          num1 ^= i; // num1是nums中所有值进行异或的结果
        }
        // 获得上述循环结果的二进制表示最右边的一个1
        int mask = num1 == INT_MIN ? num1 : num1 & (-num1);
        for(auto i : nums){
            if(i & mask)
                num2 ^= i; // 用这个结果进行分类, 可以得到其中一个只出现一次的数
        }
        num1 ^= num2; // 得到另一个只出现一次的数
        return vector{num1, num2};
    }
};

这道题我做过,但是印象不深,简单说了下自己思路.面试官就问: "你做过这道题是吧,那我再考考你,有2n+1个数,里面有三个数出现一次,其它数都出现了两次,怎么找到这三个数?"

这题把我给整不会了,面试官很好,一直在引导我,奈何我自己太菜了,最后也没做出来.后面自己上网查了资料,写了一下.

参考: //https://blog.csdn.net/xiang_yu_pai/article/details/120473969

自己根据博客写的,:

int lowbit(int n){
    return n == INT_MIN ? n : n & (-n);
}
vector findTwosingleNumber(vector& nums) {
    int num1 = 0, num2 = 0; 
    for(auto i : nums){
        num1 ^= i; // num1是nums中所有值进行异或的结果
    }
    int mask = lowbit(num1); // 获得上述循环结果的二进制表示最右边的一个1
    for(auto i : nums){
        if(i & mask)
            num2 ^= i; // 用这个结果进行分类, 可以得到其中一个只出现一次的数
    }
    num1 ^= num2; // 得到另一个只出现一次的数
    return vector{num1, num2};
}
vector singleNumber(vector &nums) {
    int x = 0;
    for(auto i : nums){
        x ^= i;
    }
    int mask = 0;
    for(auto i : nums) {
        mask ^= lowbit(x^i);
    }
    mask = lowbit(mask);
    int num1 = 0;
    vector n23;
    for(auto i : nums){
        if(mask & lowbit(x, i))
            num1 ^= i;
        else
            n23.push_back(i);
    }
    vector result = findTwosingleNumber(n23);
    result.push_back(num1);
    return result;
}

第二题: 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。(leetcode 424)

这道题只做出了退化的情况(即字符串中只有'0'和'1'),滑动窗口框架算是写出来了,没有想到要用数组记录字符出现的个数这个点.

题解

class Solution {
public:
    int characterReplacement(string s, int k) {
        vector count(26, 0);
        int maxCount = 0, left = 0, res = 0;
        for(int i = 0; i < s.size(); ++i){
            ++count[s[i] - 'A'];
            maxCount = max(maxCount, count[s[i] - 'A']);
            while(i - left + 1 - maxCount > k){
                --count[s[left] - 'A'];
                ++left;
            }
            res = max(res, i - left + 1);
        }
        return res;
    }
};
#TPLINK春招##春招##面经##C/C++#
全部评论
楼主二面以后多久通知三面?
1 回复
分享
发布于 2022-03-29 17:25
楼主是base哪里的呀
1 回复
分享
发布于 2022-03-30 14:11
联易融
校招火热招聘中
官网直投
请问楼主多久收到在线测评?
点赞 回复
分享
发布于 2022-03-29 16:48
楼主,本科双非硕985,tp简历是不是也过不了呀
点赞 回复
分享
发布于 2022-03-30 20:32
楼主也是29号三面结束吗,有收到座谈吗
点赞 回复
分享
发布于 2022-03-31 18:14
楼主,我二面的时候,他说是最后一面了,什么意思啊?本9,软件工程师(深圳)
点赞 回复
分享
发布于 2022-04-06 18:11
请问楼主代码题是手撕还是说下思路就可以呢?
点赞 回复
分享
发布于 2022-05-30 18:59

相关推荐

22 59 评论
分享
牛客网
牛客企业服务