字节(客户端)
在9月23日上午收到字节教育的感谢信后,下午立刻被抖音捞,字节的大池子我真的爱
之前在面试中屡屡受挫,让我很怀疑自己,甚至都想放弃这次机会,但为了不让自己后悔,在朋友们的鼓励下,还是鼓足勇气去面了。
一面 9.28 50min
- 自我介绍
- 项目相关
1、客户端之间怎么连接?
2、每个连接都是开不同的端口吗?
3、连接是基于TCP还是UDP? - TCP怎么保证传输可靠性?
- TCP三次握手、四次挥手
- HTTP是一种什么样的协议?
- HTTPS/HTTP区别
- HTTPS具体怎么实现的?
- HTTP的报文格式
- HTTP的请求头部有哪些典型信息?
- 用户代理信息放在哪里?
- 程序被编译成可执行文件的过程
- 链接的过程?主要做了什么?
- 汇编之后的文件为什么不可执行?
- 内存空间分配
- 字符数组
int main()
{
char a[]="abcde";
return 0;
}
a存放在哪里?
“abcde”放在哪里?
sizeof(a)=6
a[1]='a';允许吗? - 什么是虚拟内存
- 博弈论/必胜态/必败态
200个球,两个人拿,每人每次拿1-5颗,如果轮到拿时,没有球,则输。我先拿,有办法保证我赢吗?
我赢,保证最后一次拿的在1-5之间;则上一轮剩给你的6个,则我一定会赢;再上上一轮,剩给你12个,则我一定会赢...每次剩给你的是6的倍数,则我一定赢。则第一次我应该拿4颗,剩给你196颗。 - 手撕:每k个元素翻转单向链表
如:1 2 4 6 5 7 9 8 1 5,每3个元素翻转
得:4 2 1 7 5 6 9 8 1 5#include <iostream> using namespace std; struct ListNode { int val; ListNode* next; ListNode(int x):val(x),next(NULL) {} }; void swap(ListNode* node1,ListNode* node2) { int temp=node1->val; node1->val=node2->val; node2->val=temp; } void myreverse1(ListNode* head,int k) { ListNode* temp=head; for(int i=0;i<k-1;++i) { temp=temp->next; if(temp==NULL) return; } swap(head,temp); } ListNode* myreverse(ListNode* head,int k) { if(k==0 || k==1 || head==nullptr) return head; ListNode* temp=head; for(int i=0;i<k-1;++i) { temp=temp->next; if(temp==NULL) return head; } swap(head,temp); myreverse(temp->next,k); temp=head->next; while((k-1)>0) { k=k-2; myreverse1(temp,k); temp=temp->next; } return head; } int main() { ListNode* head=new ListNode(1); ListNode* l2=new ListNode(2); head->next=l2; ListNode* l3=new ListNode(4); l2->next=l3; ListNode* l4=new ListNode(6); l3->next=l4; ListNode* l5=new ListNode(5); l4->next=l5; ListNode* l6=new ListNode(7); l5->next=l6; ListNode* l7=new ListNode(9); l6->next=l7; ListNode* l8=new ListNode(8); l7->next=l8; ListNode* l9=new ListNode(1); l8->next=l9; ListNode* l10=new ListNode(5); l9->next=l10; ListNode* newhead=myreverse(head,3); for(auto node=newhead;node!=nullptr;node=node->next) { cout<<node->val<<" "; } return 0; }
二面 9.29 55min
第一眼看到以为是个严肃的大哥,没想到,并不是......
- 自我介绍(大哥说感觉我就像背书一样......可能中午刚睡醒,语速比较慢......)
- 项目相关
1、智能小车的循迹怎么做的?
2、困难点在哪里?
3、火炮身管的核心点是什么?
二维图片特征提取转换成三维的坐标
4、仪器需要放在固定位置吗?
在炮管中是动态变化的
5、网络这方面为什么用第三方库?
6、第三方库主要做了什么事情?
负责连接管理等事情
7、协议有帮助处理吗?
TCP是流式的,比如,发送一个hello,显示hello;发送hello world,显示hello world,怎么拆分这两个包?
自带编解码器
8、自己会设计类似这样吗?
9、比如0x00开头,0x00结尾,发送的内容是0x00,怎么处理?
怎么判断开头和结尾?或者怎么判断0x00是结束还是发送的内容?
TCP协议报文的前几个字符是做什么用的?
TCP是怎么发送数据包的?做到有序? - 多线程和多进程有什么区别?
- 一个任务单线程也可以完成,为什么要用多线程?什么情况下用多线程?
并发,不同线程同时完成不同的操作 - 多线程快还是单线程快?
- 计算密集型任务,单线程快还是多线程快?
单线程
如果是双核计算机? - 锁的原理?怎么实现的?
怎么做到把两个线程锁起来?体内原理看过吗?(我:???大哥:这个是课本上有的) - 结构体
struct my
{
char a;
short b;
char c;
int d;
char arr[3];
};
单字节对齐占多少字节?1+2+1+4+3=11
4字节对齐:1(1)+2+1(3)+4+3+(1)=16(按小的补齐) - 为什么要字节对齐?
- 什么情况下读两次?为什么读两次?
回答的点不对。。。 - TCP/HTTP的区别
- HTTP/HTTPS区别
- SSL握手过程
- 非对称交换的作用是什么?
- 如果把所有的通信包都拦截下来,可不可以破解他的密钥?
- 客户端怎么知道里面的内容的(好像是说怎么知道公钥的)?
- 如果已经拿到公钥,也可以解密吗?怎么保密?
不可以(然而我说可以。。。)抓到所有的包,也解不开里面所有的内容 - 数据库用过吗?
- 有100万人抛硬币,正面为上的时候,记录+1,停止抛;反面为上,记录+1,继续抛,直到出现正面为止。正面和反面记录的比值大概是多少?
1:1 硬币正反出现的概率是一样的,跟你抛多少次,怎么抛是没有关系的。 - 手撕:实现一个支持 push, pop操作,并能在常数时间内检索到最大元素的栈
#include <bits/stdc++.h> using namespace std; class MaxStack { public: MaxStack() {} void push(int x) { s1.push(x); if(s2.empty() || x>=s2.top()) s2.push(x); } void pop() { if(s1.top()==s2.top()) s2.pop(); s1.pop(); } int top() { return s1.top(); } int getmax() { return s2.top(); } private: stack<int> s1,s2; }; int main() { MaxStack m; m.push(1); m.push(7); m.push(2); int maxx=m.getmax(); m.pop(); int i=m.top(); cout<<"max: "<<maxx<<endl; cout<<"top: "<<i<<endl; return 0; }
- 智力题(果然,该来的还是会来)
8个长一样的球,有1个比别的重,最少用天平称几次能找到这个重的球?
两次。
第一次取6个,各3个放在两边;
一边重:取重的中的2个,再称一次;
一样重:重的在剩下的3个里。
然后再称一次。 - 反问
业务:抖音上游:剪映、轻颜、FACEU
三面 10.13 35min
- 自我介绍
- 项目相关
1、身管膛线是什么样的设备
2、光是怎么打出来的?相机得到的是什么样的图像?
3、用到什么样的图像处理?
4、位置是怎么确定的?
5、之前学过图像处理吗? - 怎么判断一个点在矩形里?
- 电赛参与的是哪个项目?
- C++内存管理
- 数据库用过吗?
- 聊天服务器带图形用户界面吗?
- 非阻塞复用的模式是怎么实现的?
- 手撕:从第一个字符串中去掉第二个字符串中包含的字符
- 哈希表的实现:哈希函数
- 进程间通信方式?用过哪个?
- 用过UDP协议吗?
- TCP和UDP区别
- TCP怎么保障可靠性?
- 自己擅长的点?
- 可以来实习吗?
- 反问:业务和加强的方面
影像产品
要加强基础
面完感觉凉透了,面试过程中,可以明显感觉到面试官对我不感兴趣。。。
心里还是会有些难过,准备了很久,等到今天才面试,但结果却很差劲。可能就是没有缘分吧,我和面试官的重点不是一个重点。我知道自己还有很多不足,但一次面试不能说明什么问题,继续努力就好。
这可能是这次秋招中最后的一次面试,我也没有遗憾,没有放弃任何一次面试的机会,虽然中间会想要放弃,但还是硬着头皮给自己勇气,坚持了下来。
路还要继续走,前方一片光明,加油啊,姑娘。