虾皮9.22后端笔试

已经交卷了,尽力了...
题型是10个单选,5个多选,3个编程,选择题难度还可以。
第一道题是字符串匹配,我直接暴力算相似度的,过了80%
第二道题是测试成本,排序完前两项相加可以,加完了再排下序,过了90%
第三道题是背包的最小上限,不会做,骗过了10%
/*
*最小容量
详细描述
有n(1<=n<=100000)件重量为w1,w2...wn (1<=wi<=100000)的物品,小S有m(1<=m<=n)个袋子,每个袋子的容量上限是k。

已知n,w1,w2...wn和m,求最小的k。 小S一定是按w1到wn顺序进行打包。



比如:

n=4

m=2

w1,w2,w3,w4 = 4, 2, 3, 1

其中一种方案:

第一个袋子装 w1和w2,重量是6

第二个袋子装w3和w4,重量是4

所以袋子的容量上限最小是6
*/
func Solve(n int, m int, weights []int) int64 {
	var res int64 = -9999
	if n%m == 0 {
		count := n / m
		for i := 0; i < n; i += count {
			var temp int64
			for j := i; j < i+count; j++ {
				temp += int64(weights[j])
			}
			if temp > res {
				res = temp
			}
		}
	}
	return res
}

/*
*找出最低的测试成本是多少
详细描述
对于一些大型软件项目来说,通常会将任务拆分为很多小模块定义好接口来进行开发。

测试人员对于每个模块都没计了一些回归测试用例,在开发人员提测后需要对每个模块都执行一下相应模块的测试用例

现在各个子模块都完成了开发,假设有一个要求,每次只能合并两个模块的代码,两个模块合并后,需要执行这两个模块的所有测试用例

请你写一个程序帮忙计算一下这样两两合并并测试,测试人员最小需要执行多少次测试用例。

比如一个项目有三个模块,每个模块对应的测试用例数量分别为 [1, 2, 9]

那么先合并前两个模块,需要执行3个测试用例,然后再将合并后的模块与第三个模块合并再测试需要再执行12个测试用例,总计最少需要执行15个测试用例

其他
时间限制: 1000ms

内存限制: 256.0MB

输入输出示例
示例1
输入
[1,2,9]
输出
15
*/
func minEffort(cases []int) int {
	// write code here
	// 两两合并
	c := cases
	var res int
	sort.Ints(c)
	for len(c) > 1 {
		temp := c[0] + c[1]
		// fmt.Println(c, temp)
		res += temp
		c[1] = temp
		c = c[1:]
		// 重新找到合适的位置
		sort.Ints(c)
	}

	return res

}

/*
*最有可能想要输入的命令
详细描述
给你一个非空字符串数组 commands 用来表示可以执行的候选命令列表,和一个用户误输入的(不在 commands 中)命令字符串 input。

求与用户输入的命令的最佳匹配命令。题目保证只有一个最佳匹配。

最佳匹配是指:通过最少的次数对 input  “插入一个字符”或“替换一个字符”或“删除一个字符”使其等于 commands  中的一个。



其他
时间限制: 1000ms

内存限制: 256.0MB

输入输出示例
示例1
输入
["main"],"mian"
输出
"main"
示例2
输入
["server"],"serv"
输出
"server"
示例3
输入
["help","version","status"],"statsu"
输出
"status"
*/
func didYouMean(commands []string, input string) string {
	// write code here
	// 计算重复字母数量
	inputMap := make(map[rune]int)
	for _, b := range input {
		inputMap[b] = inputMap[b] + 1
	}

	comMap := make(map[string]map[rune]int)
	var res string
	var resRatio float64
	for _, c := range commands {
		comMap[c] = make(map[rune]int)
		for _, b := range c {
			comMap[c][b] = comMap[c][b] + 1
		}

		var tempCount int
		for k, v := range inputMap {
			if count, ok := comMap[c][k]; ok {
				if v <= count {
					tempCount += v
				} else {
					tempCount += count
				}
			}
		}

		if (float64(tempCount) / float64(len(c))) > resRatio {
			// 字母重复率
			res = c
			resRatio = float64(tempCount) / float64(len(c))
		}
	}

	return res
}


#虾皮##Shopee##后端开发##笔经#
全部评论
今天发起面试了,三道笔试题都ac了当时。 但现在什么都忘了
点赞 回复 分享
发布于 2021-10-14 11:29
虾皮后端还有hc嘛?😂
点赞 回复 分享
发布于 2021-09-29 11:56
第一题用编辑距离,ac 第二题用堆排序,ac 第三题骗过了20%,完全没思路 求面试机会
点赞 回复 分享
发布于 2021-09-22 17:09

相关推荐

评论
2
7
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24847次浏览 491人参与
# 中国电信笔试 #
31080次浏览 283人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14137次浏览 209人参与
# 你的实习产出是真实的还是包装的? #
18792次浏览 330人参与
# 如果秋招能重来,我会____ #
96691次浏览 500人参与
# 春招至今,你的战绩如何? #
59910次浏览 543人参与
# 厦门银行科技岗值不值得投 #
7485次浏览 186人参与
# i人适合做什么工作 #
36914次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79511次浏览 219人参与
# 哪些公司真双非友好? #
69200次浏览 287人参与
# 金三银四,你的春招进行到哪个阶段了? #
21567次浏览 277人参与
# 找AI工作可以去哪些公司? #
7673次浏览 186人参与
# 从事AI岗需要掌握哪些技术栈? #
7676次浏览 251人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339915次浏览 2165人参与
# 面试尴尬现场 #
220755次浏览 861人参与
# 五一之后,实习真的很难找吗? #
102797次浏览 584人参与
# 你做过最难的笔试是哪家公司 #
30108次浏览 193人参与
# 你小时候最想从事什么职业 #
159840次浏览 2072人参与
# 应届生第一份工资要多少合适 #
20483次浏览 84人参与
# 阿里笔试 #
176460次浏览 1302人参与
# 一张图晒出你司的标语 #
3821次浏览 72人参与
# 面试被问期望薪资时该如何回答 #
382457次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务