柠檬微趣C++客户端笔试

服务端和客户端都投了,笔试显示是客户端
时间:2024/07/31 120分钟
4道编程题
1. abc是有效字符串,往有效字符串内任意位置插入abc后依然是有效字符串,判断一个给定字符串是否有效
链表,维护所有连续abc位置并依次删除,删除一个abc后看对应位置是否产生新的连续abc,复杂度O(n)
下来复盘发现做麻烦了,用一个栈类似括号匹配那样维护就行了
2. 输出n位第k号格雷码
由格雷码性质,k的二进制相邻位异或
3. 给定一个序列,求每个数其后面比它大的最小数
倒序遍历,set+upper_bound
4. 给定一个二叉树,在给定的若干层画水平直线,问画出来的图形有多少闭合区域
从最深的水平直线开始倒序维护每一层有哪些有用节点,如果两个节点走到同一父节点,则新增区域数加一;如果遇到另一条水平直线,则新增区域数为前一层有用节点数减一,并更新当前层的有用节点
全部评论
杰哥什么时候能像你一样优秀
点赞 回复 分享
发布于 2024-08-05 23:47 四川

相关推荐

会员标识
09-02 21:49
已编辑
电子科技大学 算法工程师
纯八股一点项目没问,也是挺少见的,柠檬是个好公司,有点想要痛哭流涕当时oc了最后没去,感觉怪不好意思的,秋招应该也不会再投他们家了,发出来攒攒好运柠檬一面+二面4.2投递,4.12笔,4.24一面,4..28二面,一面1.逻辑右移和算术右移的区别?2.一般有符号整数的编码方式?3.补码的规则是什么?4.为什么采用补码去记有符号整数--这个确实没想起来,说了可以首尾成环,可以连续表示什么的……(搜了下其实主要是解决原码和反码的问题(无法统一加减法,零的歧义,溢出不好判断等问题)5.有符号整数,正数和负数的值域不同,为什么会这样?--我说有正数这里会有0的存在,(实际更好的回答,是说原本原码和反码有双0的歧义,补码没有歧义,原本表示-0的10000000在补码中被定义为-128)6.浮点数在计算机里是怎么存的(1+8+23,怎么组合忘了)7.描述一下快速排序8.快排的nlogn是怎么推出来的9.最差的情况下会退化成?10.稳定还是不稳定?为什么不稳定11.STL,挑一些容器说一下内部实现原理(说了vector,list,map,unordered_map)12.Vector怎么扩容13.什么情况下,即使不有序也不会考虑使用哈希表存储数据?--一时半会想不到,说了哈希表可能存在严重哈希冲突导致退化成O(n),还有就是哈希表内存可能占用更多(还有吗?)14.哈希表怎么知道哪几个元素发生冲突了?15.Const Static Inline 说一下使用场景16.C++多态如何实现?17.虚函数作用原理18.构造函数可以是虚的吗?析构呢?静态函数可以是虚的吗?手撕:获取二叉树最大深度的所有结点(用的层序遍历)二面:自我介绍略1.一上来直接让我定义单向链表的数据结构(结构体)2.创建一个ListNode,创建在哪个内存?说下开辟的内存大小3.关于这个内存对齐还有哪些方面能再具体讲一下吗?--主要补充了内存对齐优缺点,以及pragma_back调整内存对齐4.关于堆和栈的区别有哪些,能再讲一下吗?5.对于堆内存的管理手段,有哪些你知道的呢?说一下--除了new malloc这些,还说了两级分配器和内存池6.你刚说的这种做法有什么好处?--减少new/malloc调用开销,降低内存碎片7.你刚刚提到的内存碎片是怎么一回事?--说了内部碎片和外部碎片后面重点开始了8.用ListNode创建两个单向链表,两个单项链表有任意个公共节点 (0~无穷),画出有哪些组合(看图2)一开始的储备只有1,2,3,4,5,6,网上不少文章也是这样的,但面试官提示,有9种。后面磕磕绊绊临场把7,8,9考虑出来了9.假设已知只有两个链表的头结点,怎么确定具体是其中哪一种。临场的解决思路是,(仅供参考)首先要看是否有环(快慢指针),然后仍然要算结点数量,长度,(如果有环的话,需要找到入环位置,确定有效的结点数量)无环情况比较好区分,就是长度差先后走的那一套有环情况:1)如果两表循环能回到自己的头结点,可以得出 8。(8其实就是同一个环,不同头结点位置)2)然后5是2的变体,7是4的变体,9是1的变体,就看开始相交的位置和入环口的关系(9其实有两种情况,一种是两个都有环外部分,另一种是,一个为环,一个有环外部分)3)排除所有其他情况最后为6.10.中间顺便问了下怎么看是否有环,如何找入环位置等常规问题。前后这里口述扯了有20分钟,面试官有一定引导,也还算宽容手撕:给一个7x9的棋盘,选一个位置,围绕这个位置顺时针开始放数字,放30个数。其余置0。注意考虑边缘情况。我没找到原题,个人的思路大概就是螺旋数组II那道题的思路,大循环内4个小循环添数字。注意要加一点判断,如果超出了7x9的边界,那么就跳过,num就不会增加。(仅供参考)
查看30道真题和解析
点赞 评论 收藏
分享
1.  自我介绍2.  JS定义变量方式?let const var区别?3.  为什么用const定义变量不可以被修改?底层原理?一定不能改?4.  `let a = 1; let a = 2;` 会发生什么?会报什么错?5.  `var a = 1; var a = 2;` 可以吗?`var a = 1; let a = 2;` 呢?6.  `var`特性(如变量提升)?`console.log(a); var a = 1;` 的结果是什么?7.  JS中基本数据类型?分别存储在哪里(栈/堆)?8.  `let a = {}; b = a; `修改b会影响a吗(会)如何避免(深拷贝)9.  实现一个深拷贝?其它具体方法?10. 什么是同步和异步?什么场景下使用异步?11. 如何将异步操作中的变量/结果给同步代码使用?12. Promise的.then()和.catch()区别?什么情况用?await?13. ==和 ===区别?14. false == '0'结果?false == undefined?null == undefined ?15. 可以 let null = 1吗?16. String常用的方法?17. Array有哪些常用的增删改查方法?18. typeof和 instanceof 区别?19. 介绍一下 Webpack20. Webpack 中的 Loader ?作用?21. Webpack 有哪些特性?构建速度?如何优化?22. 什么是 HTTP?和 HTTPS 区别?23. 为什么 HTTPS 安全?(对称加密和非对称加密解释 HTTPS 的原理)24. 算法题:分金条(LeetCode原题:分发糖果)。25. 解法时间和空间复杂度分别是多少?26. 开发过程中遇到过什么问题?(结合项目说了点方法论)27. 职业规划?28. 反问环节(作息、业务、问了下为啥没问项目和实习,说比较侧重基础)ps:算法只让说思路,而且题目是口述的一开始以为是对于所有人,评分高的要比评分低的分的多,排序+遍历即可后边说我理解错了,是相邻的人,评分高的分的多做过接雨水,类比了一下,两次遍历即可(以为是mid,下来一看是hard)面试体验:还可以,基础的小点比较多比较碎,有些忘记了一开始理解错在那想不让排序怎么On得出最少奖金,以为做不出来了
查看27道真题和解析
点赞 评论 收藏
分享
评论
9
27
分享

创作者周榜

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