【华为正式岗】后台开发1面

【华为正式岗】后台开发1面,第1张

2022.6.9 一面

代码题:
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

示例1:
	输入: s = "leetcode", wordDict = ["leet", "code"]
	输出: true
	解释: 返回 true 因为 "leetcode" 可以由 "leet""code" 拼接成。

示例2:
输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。
     注意,你可以重复使用字典中的单词。

示例3:
输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false

解:


#include 
#include
#include
using namespace std;
bool StringStartWithWord(string str1, string word) {
    int lenStr1 = str1.size(),lenWord = word.size();
    if (lenStr1<lenWord)
    {
        return false;
    }
    for (int i = 0; i < lenWord; i++)
    {
        if (str1[i]!=word[i])
        {
            return false;
        }
    }
    return true;
}

bool wordByDict(string str, vector<string> wordDict) {
    int strLen = str.size();
    bool canBeComp = false;
    if (strLen==0)
    {
        return true;
    }
    for (int i = 0; i <strLen ; i++)
    {
        for (auto word:wordDict)
        {
            if (StringStartWithWord(str, word)) {
                str.substr(word.size());
                canBeComp = wordByDict(str, wordDict);
                if (canBeComp)
                {
                    return true;
                }
            }
        }
    }
    return false;
}

void testcase(const string caseName,vector<string> testcase, string testString) {
    cout << caseName << ":  ";
    if (wordByDict(testString, testcase)) {
        cout << "true";
    }
    else {
        cout << "false";
    }
    cout << endl;
}

int main()
{
    vector<string> testcase1{ "cats", "dog", "sand", "and", "cat" };
    string testString1 = "catsandog";
    testcase("Test1", testcase1, testString1);
    vector<string> testcase2{ "apple", "pen" };
    string testString2 = "applepenapple";
    testcase("Test2", testcase2, testString2);
    testcase("Test3", vector<string>{"leet", "code"}, "leetcode");
    testcase("Test4", vector<string>{}, "");
    return 0;
}
问题: 1.你对TCP有多少了解,

答了一些例如粘包,tcp基于字节流,tcp可靠传输,tcp滑动窗口,快恢复,慢启动,快速重传,三次握手、四次挥手等等
因为这个问题很模糊,就东一点西一点答了,不知道他具体想问什么,想听到什么

2.你了解TSL协议吗?

= = 答了不了解,
(如果他问我https,我肯定就说了解了,什么加密啊,公钥啊,私钥啊啥的,https就是基于tsl的)

3.TCP是如何保证可靠传输的

滑动窗口、接收方、发送方各自维护一个窗口,重传和ack确认字节等等、

4.TCP的四次挥手涉及哪些状态

我想他应该是想问半关闭,但是他这样问,我不太清楚怎么答…
于是答了一些有的没的
正确答案:


5.HTTP协议是用tcp还是Udp

tcp

6.你对UDP了解多少?

按包传、不可靠传输、udp参数简单
但是我这样说,感觉他不是很满意…不知道错哪了

7.tcp和Udp区别

这个又把上面的1,6重复说了一遍

8.你了解ssl协议吗?

知道有个公钥、私钥加密,远程连接的时候会用到,其他的不知道了,就说不知道

9.你了解RPC吗?

不了解,好像是微服务,
说用过python的aiohttp,就是一个http地址,然后加上路由去访问,返回一个response,类似这样的
(这样说其实也不是很对)

10.接触过接口测试吗?

知道一点……传入参数到访问接口里,然后检查服务器的防御性

11.你了解系统吗?

了解一点,你可以直接问

11.1 你了解linux系统吗?你怎么理解linux系统

我一般就用一些简单指令,ps -ef|阿巴阿巴,mv,cp,chmod,mkdir,wget,tar,& ./执行一个程序bg,fg,jobs,kill等等
理解:
1.虚拟内存是基于多级页表,然后页表的实现形式是,前面一些地址是直接地址、然后是间接地址和二级页表等等
2.linux的线程、进程、信号量等等(没有展开说)
3.有epoll啊,poll之类的
具体需要问我哪个方面?

12.你刚才说到了epoll,poll,你知道select吗?他们的区别?

这个看了很多遍了,就照着下面的背诵了

12.1 所以服务器都用epoll多一些?

我说是的

13 其他:

后面问了点我的工作相关的问题,我的现在的工作是游戏功能测试、就随便说了点;
还问了下我的爬虫什么的,在之前的博客里有详细写过,他就简单问了下,现在爬数据还能爬取到吗之类的。
最后问了下我,程序和测试,你怎么看待这两者的工作;遇到程序不执行冒烟测试,你们通常怎么做?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1353385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-14
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)

保存