今天用go写的字节和网易笔试,一看题目都不难,但是莫名其妙超时或者不通过,后来仔细研究了一下发现如下两个坑:1. 使用fmt.Scan()读输入数据很慢,今天有一道差分+前缀和的题,时间复杂度O(n),已经没有运算更快的写法了,一直给我算超时,搞了半天发现是fmt.Scan()的锅,换用bufio.NewScanner(os.Stdin),一次性读取scanner的字符串、再Split、再Atoi就可以,我在本地测试的使用scanner要比fmt.Scan()快100倍2. 默认的bufio.NewScanner()其实有容量限制,为bufio.MaxScanTokenSize = 64*1024 = 65536个,也就是说默认情况下只能读取65536个byte的长度,如果读取的一行字符串的字节长度超过65536,就会报错bufio.Scanner: token too long,可以用scanner.Buffer()调大缓冲区最大读取大小解决用了两个大厂笔试踩坑呜呜