携程Java后端实习 两轮技术面
更新: 5.25 HR面
5.27
进入人才池。 感觉和HR聊的还行,没想到挂了。 可能是 25届毕业 或 排序靠后吧。
4.15笔试
...
4.26 一面
腾讯会议 (50+min)
- 栈和队列,应用场景
- 虚拟内存
- 页表作用
- 系统调用,中断,异常
- 进程之间相互独立如何理解?
- aqs原理,可以举一个具体的实现来说? (这里说的比较多)
- JUC,线程之间如何实现同步
- 分布式锁的底层原理
- 项目中用到了lua脚本,Lua脚本的作用?
- Redisson的底层机制了解吗? 与redis实现分布式锁有什么区别?解决了哪些问题?
- mysql主从同步延迟太大如何处理?
- 算法题: 最长回文子串 (本地编译器写,共享屏幕)
反问:...
有些问题记不清了,面试官人很好,全程没有很严肃,回答不好的点也会进行给一些提示。
5.12 二面
腾讯会议,大约40min
- 自我介绍
- 项目中遇到了哪些困难的问题,如何解决的?
手撕算法
开启共享屏幕,本地编辑器写,每个题目写完后要求讲思路
- 反转链表,不允许递归
- ipv4地址编码、解码
- 编码: 将
ipv4使用一个int类型存储 - 解码:
int类型解码为ipv4地址
int encode(String ipv4); String decode(int ipv4); 测试输入:"10.0.0.1"
写完算法就到反问环节了,我还问有没有其他问题了,感觉有点快。
反问环节: ...
附 : 第二题ipv4 编码、解码 C++实现
思路:
int类型有32位,用8个bit位分别存储ipv4每个部分。这是现场写的,代码有些冗长,有很多可以优化的地方。
#include <bits/stdc++.h>
using namespace std;
/*
int encode(String ipv4);
String decode(int ipv4);
测试输入:"10.0.0.1"
*/
// 编码
int encode(string ipv4) {
int code = 0, n = ipv4.size(), num = 0;
vector<int> parts;
for (int i = 0; i < n; ++i) {
if (ipv4[i] == '.') {
parts.push_back(num);
num = 0;
} else {
num = num * 10 + ipv4[i] - '0';
}
}
parts.push_back(num);
for (int i = 0; i < 4; ++i) {
code <<= 8;
code |= parts[i];
}
return code;
}
// 解码
string decode(int ipv4) {
string ans;
vector<int> parts;
for (int i = 0; i < 4; ++i) {
int num = (255) & ipv4;
parts.push_back(num);
ipv4 >>= 8;
}
reverse(parts.begin(), parts.end());
ans = to_string(parts[0]);
for (int i = 1; i < 4; ++i) {
ans += "." + to_string(parts[i]);
}
return ans;
}
int main() {
int val = encode("10.0.0.1");
cout << decode(val) << endl;
return 0;
}
#如何判断面试是否凉了##我的实习求职记录#