暑假实习面试后总结#01
面试形式:视频面试
面试时间:2022-04-18 15:00(GMT+08:00) 中国标准时间 - 北京
考察内容:
- 我们主要考察通用型的业务问题和过往的项目经历
- 价值观和软性技能也是我们选择人才的重要因素
项目经历(10min)
- 飞书小程序创业训练
- 腾讯-电子科大Roblox三维游戏设计
- 微信小程序云开发暑假训练营
- 小米集团“快应用与Kaldi实践应用”
- 腾讯犀牛鸟技术课堂——TDSQL数据库学习
基础知识(20min)
1. 掌握什么语言?
熟悉C,了解Java,Python,C++。
2. 32位的系统里,int占多少字节?
4字节=32bit。
3. 32位的系统里,char占多少字节?
1字节=8bit。
4. 32位的系统里,下面的结构体占多少字节?
struct s
{
int x;
char y;
}
8字节=64bit。
5. 下面三个声明的区别
- const int * :指向常量整数的指针,等效于 int const *
- const * int:我不到啊
- int * const:指向整数的常量指针
参考资料:
https://www.imangodoc.com/178201.html
指针与 const的爱恨情仇
6. ==和equal()的区别
来源的区别:
==是运算符,equals是来自于Object类定义的一个方法。
用法的区别:
==可以用于基本数据类型和引用类型。equals只能用于引用数据类型。
本质的区别:
- == 两端如果是基本数据类型,就是判断值是否相同。
== 两端如果是引用数据类型,它比较的是这两个对象在栈中的引用(地址)是否相同。
在Object类中Equals方法就是用 == 来比较。如果没有重写equal方法,equal方法和 == 是等价的。 - 通常情况会重写equal方法,重写equals可以让我们自己定义条件来判断两个对象是否相同。Equals在重写之后,可以判断两个对象的属性值(内容)是否相同。
- 对于对象而言,==是比较对象引用地址(栈中),重写后的equals是比较对象内容(堆中)。
参考资料:
equal和 == 的区别
Java中equal和 == 的区别
7. 进程与线程
进程是资源分配的基本单位。
线程是调度的基本单位。
内核级线程,用户级线程,混合型线程。
8.死锁
死锁的概念:两个或多个进程为争夺资源而相互等待以至于永久阻塞的现象。
死锁避免:银行家算法。
死锁检测及处理。
9. OSI七层模型
应用层、会话层、表示层、传输层、网络层、数据链路层、物理层
10. TCP和UDP
TCP和UDP都是传输层协议。
TCP是面向连接的提供可靠端到端传输的协议。
UDP是不面向连接的提供不可靠端到端传输的协议。
参考资料:
TCP与UDP的区别
后面发散的讲了下3次握手。
11. Https和Http的区别
-
端口
https的端口是443,而http的端口是80,当然两者的连接方式也是不太一样的。 -
传输数据
http传输是明文的,而https是用ssl进行加密的。https具有安全性。 -
申请证书
https传输一般是需要申请证书,申请证书可能会需要一定的费用,而http不需要。
参考资料:
HTTP与HTTPS的区别
12. POST和GET的区别
-
get是从服务器上获取数据。
-
post是向服务器传送数据。
参考资料:
GET 和 POST详解
13. 会git吗?
不会,只用过github desktop。
编程(20min)
Leetcode原题:15. 三数之和
解法:排序+双指针
代码:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
vector<vector<int>> ans;
// 枚举 a
for (int first = 0; first < n; ++first) {
// 需要和上一次枚举的数不相同
if (first > 0 && nums[first] == nums[first - 1]) {
continue;
}
// c 对应的指针初始指向数组的最右端
int third = n - 1;
int target = -nums[first];
// 枚举 b
for (int second = first + 1; second < n; ++second) {
// 需要和上一次枚举的数不相同
if (second > first + 1 && nums[second] == nums[second - 1]) {
continue;
}
// 需要保证 b 的指针在 c 的指针的左侧
while (second < third && nums[second] + nums[third] > target) {
--third;
}
// 如果指针重合,随着 b 后续的增加
// 就不会有满足 a+b+c=0 并且 b<c 的 c 了,可以退出循环
if (second == third) {
break;
}
if (nums[second] + nums[third] == target) {
ans.push_back({nums[first], nums[second], nums[third]});
}
}
}
return ans;
}
};
结果:在飞书客户端写的,要写一个完整的程序,最后超时了。。。
自由提问(15min)
1. 主要做什么?
IOS客户端开发。
2. 主要用什么语言?
Swift,Kotlin。
3. 在哪上班?
北京、上海、深圳。
4. 实习生大概怎么入职?
培训半个月,直接进组干活。
5. 疫情怎么办?
居家远程实习。