深圳睿联技术二面--淘汰

3.27二面
面试官说不局限在当时项目背景和当时使用的技术,探讨实习和项目

自我介绍

实习
1.通过建立索引和缓存优化查询效率,详细介绍一下是什么样的场景?
2.什么场景使用雪花算法生成id,什么时候用数据库自增 id?(胡言乱语了
3.如果你Id的数据类型使用bigint,岂不是和雪花算法差不多?(不会)
4.面试官讲了主键使用smallint和int是个很危险的操作
5.通常根据查询设置索引,有例外吗?(有点儿懵,后来想想可以说说唯一性约束和外键的
6.根据查询创建索引,具体怎么去做?(说了怎么根据索引去查数据,没理解对问题)
7.什么时候做单列索引,什么时候做联合索引?(举了个例子,被说没分清关联表和联合索引,面试官解释
8.什么时候查询条件不放在索引里面?(又举个例子,被说刚好是不合适的
9.有没有了解过MySQL中索引的实现,如何支持快速检索的?(说有,面试官说有了解的话上面几个问题应该清楚的
10.了解的程度,主键索引、外键索引实现上面有差别吗?普通索引和唯一索引呢?外键的唯一索引和普通索引?(
11.什么情况下使用缓存,说说具体场景?(这一块当时实习没理解好,面试官评价我缓存用的很神奇)
12.你自己判断你说的缓存使用场景合适吗?(合适还是不合适呢)

项目
1.评论和回复怎么设计的,数据结构、数据表?
2.查询的时候,是把所有的评论和回复都查出来吗?有做分页吗?查询的时候怎么控制回复的数量?
3.redis作为缓存还是DB ,还是两个混用,在项目中怎么使用,如何权衡?
4.缓存是需要淘汰的,怎么确保缓存淘汰不影响业务,不影响需要持久化的数据?(有点儿懵,搞不懂问题)
5.设置点赞和取消点赞、连续两次点赞无效,这两种方法哪种好?(面试官说更有趣了
6.kafka异步通知是什么场景,为什么要用kafka?(为什么用没说到点上)
7.代驾项目中GEO搜索附近司机是如何实现的?数据量特别大情况下怎么做?
8.用户叫代驾后,怎么看到附近司机的位置,如果不用现成的工具,怎么做?

反问
1.面试评价?
在搞清楚业务的前提下,明确系统的局限性和边界,数据规模不同,系统的设计方法也不同
===========分割线===========
对业务场景和细节确实要搞清楚些,八股也要结合项目去准备

3.31 官网状态:淘汰
全部评论

相关推荐

核心思路是先统计链表总长度,确定需要反转的组数,再逐组局部反转并重新连接,计算出需要反转的组数s = n/k;然后循环s次,每次对当前 k 个节点进行局部反转,反转后将当前组的首尾与前后部分重新连接,最后返回处理后的链表头。对应的代码解析如下:class Solution {public:ListNode* reverseKGroup(ListNode* head, int k) {if(!head || k == 1) return head; // 空链表或k=1无需反转ListNode* dummy = new ListNode(0); // 虚拟头节点,简化头节点处理dummy->next = head;ListNode* cur = head;ListNode* pre = dummy; // 记录上一组的尾节点ListNode* next = nullptr;ListNode* prev = nullptr;ListNode* temp = nullptr; // 记录当前组反转前的头节点int n = 0;while(cur != nullptr) {n++;cur = cur->next;}cur = head;if(n == 1) return head; // 只有1个节点直接返回int s = n / k; // 计算需要反转的组数while(s--) {for(int i = 0; i < k; i++) {if(i == 0) temp = cur; // 记录当前组反转前的头节点next = cur->next;cur->next = prev; // 当前节点指向前一个反转节点prev = cur;cur = next;}pre->next = prev;temp->next = cur;pre = temp; // 更新上一组的尾节点为当前组反转前的头节点prev = nullptr; // 重置反转前驱指针}ListNode* newhead = dummy->next;delete dummy; // 释放虚拟头节点,避免内存泄漏return newhead;}};该解法的时间复杂度为 O (n),空间复杂度为 O (1)。
点赞 评论 收藏
分享
评论
5
17
分享

创作者周榜

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