![240](https://cdn2.jianshu.io/assets/default_avatar/15-a7ac401939dd4df837e3bbf82abaa2a8.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
第二题你犯了太多的错误,先说对数据结构的理解上。1 map本身就是无序的,只要是range取第一个,然后break就是随机,没必要全遍历。2,你都知道了map的长度却还使用slice而不是数组,性能会非常差,因为slice要不挺的扩容,扩容要找更大的连续内存,并将原来的数据拷贝到新内存,你这样数据量大的时候不仅时间几何级数的增长,还可能内存不足。
再说设计上的问题,根本就不应该将map转成数组,记住任何时候不要轻易的做这件事。而且你这题根本没必要,实现权重抽奖只需要遍历一遍map就可以了,遍历之前设置一个变量max存名字和最大随机数,遍历的时候只要只要每次根据权重算个随机数,比max大就保留,这样循环一次就搞定,根本不要这么复杂。
从四月份下半月开始,陆陆续续面试了几家公司,都是golang的岗位。每一次面试,侧重点都会有不同,有的会直接给过来一道试题, 然后边解题,边讲述自己的思路,然后面试官根据你的...