携程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; }#如何判断面试是否凉了##我的实习求职记录#