TME2021-QQ音乐暑期实习-自然语言处理

TME2021-QQ音乐暑期实习-自然语言处理一面:

算法题(40分钟):

1. 输入一个字符串,长度 >=6 内容包含0-9, 请从中取出6个数字,组成 -时-分-秒,输出最大时间,如果无法组成有效的时间,输出无效。 例如 输入“0012345”输出: 23时54 分10秒

方法:暴力:
获得数组的全排列

class Solution:
    def largestTimeFromDigits(self,arr):

        arr = [int(x) for x in arr]
        ans = -1
        for i in range(len(arr)):

            for j in range(len(arr)):

                if i != j:

                    for k in range(len(arr)):

                        if k != i and k != j:

                            for q in range(len(arr)):

                                if q!=k and q!=i and q!=j:

                                    for w in range(len(arr)):

                                        if w!=q and w!=k and w!=i and w!=j:

                                            for l in range(len(arr)):
                                                if l!=w and l!=k and l!=q  and l!=j and l!=I:

                                                    A = arr[i] * 10 + arr[j]
                                                    B = arr[k] * 10 + arr[q]
                                                    C = arr[w] * 10 + arr[l]

                                                    if 0 <= A <= 23 and 0 <= B <= 59 and 0<=C<=59:
                                                        ans = max(ans, A *60*60 + B*60 +C)

        if ans == -1:
            return ""
        else:

            return "{:02}:{:02}:{:02}".format(ans //3600, ans//60%60,ans%60)


time = Solution
print(time.largestTimeFromDigits(time,"0051234519"))
# 输出23:59:54

2 按给定词典分割字符串
给定一个词典文件和一个字符串,要求将字符串按照词典分割, 没有在词典里面匹配的字符按照单个字符输出。
词典文件 a.txt
内容 :
hello
word
给定字符串文件 b.txt
hellohhword
输出: hello h h word

方法:
1、字典树,匹配每个字符
2、分词操作的最大前项匹配、最大后项匹配,双向匹配
3、segword
4、leetcode-139. 单词拆分

# 字典文件
#a_worddict = ['hello','word',"abc","ced"]
# 字符串
#b_word ="hellohhwordhfkdhhabcced"

a_worddict = []
f = open("a.txt")
for line in f.readlines():
    a_worddict.append(line.replace("\n",""))

# 字符串读取
f = open("b.txt")
b_word = f.read()

def dictTree(a_worddict):
    dict = {}

    for s in a_worddict:
        p=dict

        for sub_s in s:

            if sub_s in p:
                p=sub_s
            else:
                p[sub_s]={}
                p=p[sub_s]

    return dict

def splitword(b_word,dictTree):

    i,j=0,0
    list = []
    p=dictTree
    k=0
    while k

面试:

1、自我介绍
2、介绍一个项目?
3、glove和word2vec的区别?
4、word2vec两种方法的区别,优势?
5、word2vec的改进?
6、focal loss函数,focal loss函数缺点?
7、欠采样了解?
8、样本不平衡问题?
9、bert模型结构介绍?
10、layer正规化和batch正规化区别。为什么不全用batch正规化?
11、crf介绍一下,crf的输入?
12、crf的损失函数?

TME2021-QQ音乐暑期实习-自然语言处理二面:

算法题:

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。
解集不能包含重复的组合。
candidates = [2,3,6,7], target = 7,
[
[7],
[2,2,3]
]

简单回溯

def findSum(List,target):

    res = []

    def dfs(arr,path):

        if sum(path)>target:
            return

        if sum(path)==target:

            path.sort()
            if path in res:
                return
            res.append(list(path))

        for i in range(len(arr)):

            path.append(arr[I])
            dfs(arr,path)
            path.pop()

        pass

    dfs(List,[])

    print(res)

findSum([2,3,5],8)

2、给定一个字符串以及一个词典(key为词,value为词对应的类型),从字符串中找出词表中出现的词并用其对应的类型模板替代,输出所有可能的序列
e.g. text='请给我来一下那个周杰伦晴天'
word_dict={"给我来":"track","来一下":"track","一下":"track","周杰":"singer","杰伦":"singer","周杰伦":"singer","晴天":"track"}
结果 = [‘请 track track 那个singer track’,’请给我 track 那个 singer伦 track’ ...]

def replacePatten(text,word_dict):

    res = []
    n=len(text)
        
        # 采用dfs,基于树结构深度搜索
    def dfs(text,path,pos):

        if pos==n:
            if path in res:
                return
            res.append(list(path))
            return

        # 遍历当前位置至下一个位置,
        while pos
图片

1、自我介绍
2、为什么bert里的transformer要用的是multi-head attention?
3、multi-head头数和任务之间有什么关系?这个参数应该怎么设置会好一些?
4、transformer如何做并行化?
5、为什么bert引入attention机制?
6、Bert的缺点在哪?
7、针对这个问题,后面一些优化的Bert做了哪些改进。例如Roberta或xlnet?
8、介绍一下,隐马尔可夫,CRF,维特比算法?
9、隐马尔可夫和CRF比较?
10、介绍一些维特比算法?
11、介绍一下集成学习和xgboost的区别和优缺点;GBDT和XGboost的区别?xgboost为什么能做二阶展开?
12、bagging方法
13、你这边介绍一下随机森林(最特别,最典型的bagging方法),如何投票?加权投票?
14、softmax有什么优缺点?

15、你这边有什么问题?

  • 3、实习生需要什么能力,能胜任这份工作呢?

    学习能力,快速上手能力

你可能感兴趣的:(TME2021-QQ音乐暑期实习-自然语言处理)