后面就是大佬看看你的软性如何,小姐姐问题不大。先发来贺电😃
点赞 评论

相关推荐

投递米哈游等公司10个岗位
点赞 评论 收藏
转发
选择题跳过。编程题三题T1 签到,排序去重即可。T2 问刚好等于x。考虑01背包(下标从1开始)。dp[i][j][k]表示到第i个数,总共选取了j个,k=0表示[1~i]都没多次操作(都没加倍)。k=1表示[1~i]存在加倍的情况,可能是i,也可能是之前的某次。列出状态转移方程:dp[i][j][0] = min(dp[i-1][j][0], dp[i-1][j-a[i]/2][0]+1) 表示不选和选的情况。dp[i][j][1] = min(dp[i-1][j][1], dp[i-1][j-a[i]/2][1]+1, dp[i-1][j-a[i]][0]+1) 表示不选、选择但是不多次操作、选择并多次操作的情况。最后输出min(dp[n][x][0],dp[n][x][1])即可,若为inf则输出-1.第一维可以优化掉,空间O(x),时间O(nx)。T3 样例给的比较号是<和>这种,很神秘,最后发现直接改成都行。也考虑dp。先把等号去掉,那个不影响答案。假设有len个运算符dp[i][j]表示到第i个运算符右侧的数,选择j,所得到的方案数。如果第i个运算符是 > ,说明右侧的数更小,则 dp[i][j] = dp[i-1][j+1] + dp[i-1][j+2] + ... + dp[i-1][m]如果第i个运算符是 初始化dp[0][1~m] = 1,表示最左侧的数取任何数的方案数都是1最后对dp[len][1~m]求和即可。当然直接算会超时,毕竟要求和。实际上如果第i个运算符是 >,那么由于dp[i][j+1] = dp[i-1][j+2] + ... + dp[i-1][m],因此dp[i][j] = dp[i][j+1] + dp[i-1][j+1]。同理如果第i个运算符是 由于i只用到2个,因此可以压缩一维到大小为2.最后空间复杂度O(2*m) = O(m),时间复杂度O(n*m)#笔试##小红书#
投递小红书等公司10个岗位
点赞 评论 收藏
转发
整体面试流程比较顺利,两面都是一个小时时间,面试体验很好,就是等 offer 等好久。一面:有两个面试官,旁听的就问了下实习。问的挺深入的,面试官一直在问我比较擅长什么,他就问些相关的问题。1. 自我介绍2. 拷打项目3. atomic 是怎么保证原子性的4. 线程是为了解决什么问题5. 线程共享哪些资源6. 线程的独立的寄存器是怎么理解的7. QUIC 了解过吗8. 介绍下拥塞控制9. C++ 内存布局10. malloc 和 new 的区别11. 定位 new 了解过吗12. new 内部调用的是什么系统调用13. 介绍下智能指针14. shared_ptr 计数是怎么共享的,怎么解决并发问题的15. 介绍下左值和右值16. 虚左值、虚右值、从右值了解过吗17. move 是怎么实现的18. move 是为了解决什么问题,怎么解决的19. 实习经历20. 算法题:分割回文串二面:直接到主管面了,不清楚为什么,一面时候问说有三面。问的都是些开放性的问题,面试过程中不会的地方会给一些提示,实在没什么思路就换题了,学到了很多。1. 自我介绍2. 拷打项目3. 设计 Log 系统,程序崩溃时 Log 文件保留,要求只要执行相应函数打了日志就必须存在,但又对性能要求很高不能每次写都调用 sync4. 100MB 文件传递,用互联网传,怎么比 TCP 更快5. 设计内存池,用来解决内存碎片问题6. .so 文件操作系统是怎么加载的
点赞 评论 收藏
转发
牛客网
牛客企业服务