滴滴实习面经

滴滴实习面经,第1张

滴滴实习面经

滴滴出行 工程框架与算法 秋储实习生面试

2121.6.22 一面 至今没有二面的通知 凉凉!

自我介绍 没问C++基础 没问数据库

项目(以下都是项目里的内容 大概40min 全程1h

进程 线程 的区别 优缺点 TCP/IP UDP各自的优缺点 可靠传输 流量控制 拥塞控制 三次握手 四次挥手 为什么不两次握手 time_wait过多会对系统有什么影响

为什么都用进程 不考虑在一个进程下开辟三个线程?

网络通信模型 7层 socket通信

信号量机制的原子性 信号量加 减 恢复 三个过程是如何体现原子性的

共享内存

锁机制 问我的项目里遇到网络通信问题 是如何解决的 开辟两个进程进行单独处理

建立socket通信进行数据包传输时 如果上一个数据包还没来得及接收 下一个就发送了 怎么处理

多进程并发问题 问做过并发相关的开发嘛 如何处理多进程并发执行的问题 如死锁 介绍了死锁 产生死锁的情况 和如何避免死锁

对于项目中的设备为什么选择在局域网下进行 而不是将两部分集成到一个设备上
问我以后的职业规划


做题 20min

Leetcode 25 k个一组反转链表 困难

输入:1-2-3-4-5-6-7-8

输出:3-2-1-6-5-4-7-8

不太会 直接写了最简单的反转链表

然后说了一下刚才那个题的思路

补充一下代码实现:

struct ListNode
{
	int val;
	ListNode* next;
	ListNode(int x):val(x),next(NULL){}
};

class Solution
{
public:
	ListNode* reverseKGroup(ListNode* head, int k)
	{
		ListNode* last = head;//创建一个指针指向每组的第一个节点
		for (int i = 0; i < k; i++)//首先遍历这一组的k个节点 查看是不是够k个
		{
			if (last == NULL)return head;//不够k个直接返回头节点
			last = last->next;
		}
		ListNode* pre = head;//创建pre指针指向头节点
		ListNode* cur = head->next;//创建cur指针指向头节点的下一个节点
		for (int i = 0; i < k - 1; i++)//对第一组的k个节点进行反转
		{
			ListNode* temp = cur->next;
			cur->next = pre;
			pre = cur;
			cur = temp;
		}
		ListNode* next = reverseKGroup(cur, k);//递归进行下一组的反转
		head->next = next;
		return pre;
	}
};

反问


感悟:
滴滴面试体验也是很不错的 面试官是个挺年轻的哥哥 感觉交流起来也没啥障碍 脾气也蛮好的 各种引导 很有耐心
面试内容真的分企业 参加字节两面 项目都没怎么聊 滴滴上来就直接聊项目 就在项目里深挖 问的很详细 必须得好好准备
比较而言 滴滴得一面比字节一面有难度 也是自己对项目的一些细节没了解透吧
继续面 继续干!!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5685769.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存