golang写acm模式笔试大坑

今天用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()调大缓冲区最大读取大小解决
用了两个大厂笔试踩坑呜呜
全部评论
字节踩第一个坑,下午看到你回我的评论,改用scanner,成功踩到第二个坑现在打算以后用 ReadString
2 回复 分享
发布于 2023-09-24 23:11 北京
也还好,看一下go的oj怎么写的就行,反倒是我一开始go写不顺手的时候转py,惊讶地发现py的闭包支持做的跟go不一样,不支持闭包外变量的修改,做函数内dfs就很不习惯
点赞 回复 分享
发布于 2023-09-29 02:40 湖北

相关推荐

一面 1.自我介绍,为什么学习前端,平时用哪些AI,怎么用,感觉用ai有什么好处,了解ai幻觉吗,平时有没有遇到过,如何解决。了解prompt吗,如果ai表现不好会怎么做2.实现两栏布局 答了flex grid 和绝对定位,问flex具体如何实现3.浏览器访问网页的过程4.普通函数中在定时器里输出this指向5.关于项目的提问,如何实现弹幕滚动,动画什么实现(rAF),和定时器比较优势在哪,ts使用有什么好处,如果不符合ts类型会在哪里发生错误(编译时还是运行时)前后端字段不统一会在哪里发生错误6.包管理工具哪个用的多(pnmp),有什么优势package.lock有什么作用,为什么会发生包安装了不可用或冲突7.使用哪个框架多,为什么组合式api和options比较有什么优势什么时候需要使用ref使用框架实现一个功能点的流程,组合式api如何使用?(记不太清了)8.如何实现路由鉴权token前端有加密吗(没)http和HTTPS区别,详细解释非对称加密9.手撕 买卖股票的最佳时机③ 有效的括号 手写eventEmitter(选做)二面:拷打项目,如何通过token辨别是哪个用户,jwt原理,反转对象键值对,如何区分对象和数组,辨别数组方法,遍历二叉树最大值非递归,promise的输出new promise(resolve,reject)=>{log(1)resolve(true)log(2)throw new err(‘err’)log(3)reject(false)}.catch(err=>log(err)).then(res=>log(res))二面太紧张了,简单题没打上来😭还是基础不够扎实,感觉准备充分点还是有机会的
发面经攒人品
点赞 评论 收藏
分享
评论
19
50
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务