avatar-decorate
廿陆畵生 level
获赞
1146
粉丝
789
关注
1
看过 TA
1.2W
上海交通大学
2023
搜索算法
IP属地:湖南
前Shopee逐风计划信息检索算法工程师实习生
私信
关注
想润的加菲猫在摸鱼:今天也给字节hr点赞了,可惜国庆前就被挂了😅
0 点赞 评论 收藏
分享
10.2 4'370最简单的算法,一遇到现实,都会变得极其复杂。“你长大后就知道社会有多么现实了”“你工作后就知道现实有多么复杂了”“你不学数学就知道数学有多么简单了”。2022-10-03 午夜随笔 之 去年11月提出的今年实现了大半年的AdaRein优化错在哪里?HR1:说说一个你遇到的困难以及你是如何克服它的。答:作为一个破事精英,我曾推翻、否定过两个自己做了10个月的"亲儿子项目", 这是一种放弃,是一种清醒,一种识时务、知进退,也是一种解脱,让我看透问题,让我更接近真理。我把自己的挫败分享给同行,我成了loser,同时也是winner,这是不幸的遭遇,也是共性的经历。HR2:你平常喜欢做什么?答:跑步、游泳、写博客、写随笔、弹钢琴(不会)、做力扣每日一题、做周赛、听歌、看剧、喝奶茶、看脉脉、看学习强国和青年大学习,洗澡,出汗,春天的甘蔗,夏天的绿葡萄,秋天的柚子,冬天的砂糖桔。HR3:你为什么每天都洗澡?答:洗澡时可以日三省吾身,有助于发现和认清自己的问题,寻找出显而易见的矛盾,质疑和推翻自己的工作,让自己从山之巅跌到山之谷,在一片粉身碎骨中寻找那粒可怜的种子,正如7月7日我听一位前辈说的:“否定你所拥有的,一片残骸中,没了当初,只有当下”。 ​如果桶数b本来就是一个偏大的值,那么分层后过滤的空桶使得实际用到的桶数小于b,这显然可以使性能上升,但不是必然,而是偶然,生孩子不能投机取巧、碰运气,不是说换一个城市就不用付孩子的监护义务,责任任点制,不轮在哪个岗位,在那个地点。如果桶数b本来就是一个恰到好处的值,在这种情况下Rein已经是处于一个表现最佳的状态,桶数多一点或少一点都会表现差。那么这时分层过滤桶后,相当于桶数b减小了,非空桶一定变密集了,于是性能会下降。正确的做法应该是在保证桶数不变的情况下,针对每一层的取值范围而不是针对整个值域来划分,比如[1,1000000]的值域,某一层是200个桶,对应的宽度为0.4~0.6,则低值端取值只可能为[1,600000],于是每个桶对应的宽度应该是600000/200=3000而不是1000000/200=5000。这样一来,就不是特意去“造”一些空桶出来来有助于过滤了,而是该怎么办怎么办,有就有无则无。
投递脉脉等公司8个岗位
0 点赞 评论 收藏
分享
今天周赛又破纪录,第二次进国前200,世前400今天是力扣官方举办的第88场双周赛。作为一个挂过字节的人,第四题轻车熟路哈哈哈字节秋招提前批,投的是算法工程师-搜索(好像现在都没挂),那是一个美好的下午,7月12号,不对,晚上,我还在实习,租了个会议室,出的面试题是求逆序对(https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/submissions/),我强行用map-二分写出来,其中还有些瑕疵,面试官勉强同意了,问还有没有其他解法,没答上来,后来发现不能用map算,因为其迭代器不能和begin相减求个数()。面试官是策略组的,这意味着我投错了组,面试结果就是建议我去基础架构组,把我转岗了,其实就算被挂也心甘情愿(2020.04.24,2021.03.25,2022.07.12,2022.10.01另外这题也是2021年算法课的作业题),后来正式批,第一个志愿被秒挂,第二个志愿稍微久了点,也没过简历。好了,回到周赛。有点尴尬,挂了3个彩。第四题是写好后函数参数传错了,c写成了a,两个示例却过了导致没发现。第三题是异或,有点吓人,把握最终结果里每个数出现的次数就有意思了。第二题没取max导致出现-1,即没开始上传就求一次最长上传前缀的情况。第一题反而有点长而复杂,最终是没考虑到只有一个字母出现1次其他字母都出现k次的情况。
笔试
0 点赞 评论 收藏
分享
2022-09-29 午夜随笔之叕来送idea/专利了这次还是一个匹配/搜索/查询算法领域,又是难产而亡,还是将花落谁家呢?让我们拭目以待。0. 问题简介值域:[1,1000000] 正整数被查询数据/数据库/算法输入/数据集:一千万个 pair查询:输入一个value比如50万,快速找出value大于等于50万的所有id要求:方便更新、查询快、适合多个维度/属性上的AND查询 (比如要同时满足另一个维度上所有value大于等于75万的id,或者还要满足在第三个维度上有定义value的id(非空))1. 现有算法设置1000个桶(动态数组),桶号从1开始编号,第一个桶存储value位于[1,1000]的pairs,第二个桶存储value位于[1001,2000]的pairs,最后一个桶存储value位于[999001,1000000]的pairs查询:比如查询value为505000,则桶号52~100里的id即为满足条件的查询结果,另外51号桶里value大于505000的id也是查询结果,用一千万位的位集存储这些id是否出现,每个维度共享这个位集,即可解决问题。2. 不足与改进如果存在热点,则pair会集中存在于某些桶里,导致当查询值落入这些桶时需要挨个比较很多次。比如500001~510000之间的pair有800万个,则对于这个区间里的查询值,每次需要比较800万次,因为插入时就是直接append到桶的最后一个位置,每个桶上都是无序动态数组,需要挨个比较,不能二分。改进把按值域宽度等分来划分区间改成按负载等分来划分区间,让每个查询的比较次数相同,性能稳定这种等负载区间不会因为割裂热点带来什么负面影响(本来以为会有什么缺点呢,或者是还没找到?)具体看图片///这时算落入哪个区间不能O(1)了,而是O(n)。小小变动,不成敬意,来自某次面试。但这是很底层的一个改动,位于其上的算法会由之而变比如HEM的负载累增位集可以变成区间累增了,因为区间已经是负载均衡的了,不需要再加一层动态了。双向选择优化不存在动静模式了,因为此时的静态即区间数/桶数可以等价于动态的负载。但都需要过一段时间等热点偏移了就重新构建一下索引,当然在插入时实时调整也不是不可以:某个区间内的点
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务