
腾讯的一面很简单干脆,使用的在线面试功能,首先面试官给了我 6 道题,限时 50min,没有屏幕共享,所以可以上网搜索搜索 2333,不过我还是自己写的;写完题后简单讨论了一下思路,然后问了操作系统,计算机网络的一些基础知识,项目经历说的很多。
由于忘了录音,就简单记录一下我记得的部分。
1、找出其中不含有重复字符的最长连续子串的长度
int lengthOfLongestSubstring(string s){
unordered_map<char, bool> mMap;
int fast = 0;
int slow = 0;
int maxLen = 0;
while(fast < s.size()){
if(mMap[s[fast]]){
mMap[s[slow]] = false;
slow++;
}
else{
if(fast - slow > maxLen)
maxLen = fast - slow;
mMap[s[fast]] = true;
fast++;
}
}
return maxLen + 1;
}
2、有一个字符串列表,从中找出按字典序最大和最小的串。
void find(vector<string> strlist, string& strmin, string& strmax){
if(strlist.size() == 0)
return;
strmin = strlist[0];
strmax = strlist[0];
for(int i = 1; i < strlist.size(); ++i){
if(strlist[i] < strmin)
strmin = strlist[i];
if(strlist[i] > strmax)
strmax = strlist[i];
}
}3、从有序链表中去除重复的元素
struct LinkNode {
int val;
struct LinkNode * next;
};
void remove( LinkNode * head ){
if(!head) return;
unordered_map<int, bool> mMap;
while(head && head->next){
if(mMap[head->next->val]){
struct LinkNode* temp = head->next;
head->next = head->next->next;
free(temp);
}
else{
mMap[head->next->val] = true;
}
head = head->next;
}
}4、有一个二叉树,每个节点的值是一个整数。写一个函数,判断这颗树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1,否则返回0。
struct TreeNode {
int value;
struct TreeNode * left, * right;
};
int haspath(struct TreeNode * root, int value){
if(!root) return (value == 0);
if(haspath(root->left, (value - root->value)))
return 1;
if(haspath(root->right, (value - root->value)))
return 1;
return 0;
}5、算一下从1到N中,“1” 在每个数出现的次数之和
6、(逻辑题)费南德的金币游戏:
我的思路是要让对方拿到第 20 个银币,就得自己先拿到第 19 个银币,两个人轮流拿,可以控制周期为 5,控制每轮两个人拿的银币数目为5个,因此 19->14->9->4,所以最开始需要拿 4 个银币。
u1s1,这二面来得太快了,tx 效率....
二面是项目面,上来让我介绍项目,balabala 把自己的自我介绍念了一遍,感觉还 ok。然后整个过程面试官就问了一个问题,你在项目中遇到了哪些难点,是怎么解决的?
像以前一样把逆向讲了一遍,ok,fine 他不懂,Wannacry 也不知道,然后问我其他项目还有没有,但我还没开始编。。。然后就扯了一下计网课设,然后就到标准结局了,他表示如果过了还有一个技术面,具体方向不告诉我。。。感觉应该是tx难点
所以,大家一定要先编好故事.jpg ——来自半小时结束二面的教训
之前的后台开发二面凉了,后来又被腾讯云捞到了技术分析岗,一面面试官迟到一小时,非技术面,很迷。
大致面试流程和提问如下:
不得不说,腾讯的笔试是最近几个公司里面最像笔试的,其他的都整的像 ACM 笔试一样,一共五道题,AC 了 3.6 道,感觉还 okk
有一说一,C++ 有队列哦,所以对输入的字符串进行处理,然后调用队列就好了,基本上签到题。
题目如下
看到题目就不明觉厉,所以一直都没写,有人说用 dfs,咱也不知道,先放着,有时间来填坑
比较经典的一道题,不知道有没有设置时间复杂度,代码可以写得很优雅。
int main()
{
int n;
cin >> n;
stack<int> s1;
stack<int> s2;
int k;
int now = 0;
for(int i = 0; i < n; ++i){
string s;
cin >> s;
if(s == "add"){
cin >> k;
if(now == 1){
while(!s2.empty()){
s1.push(s2.top());
s2.pop();
}
now = 0;
}
s1.push(k);
}
else if(s == "peek"){
if(now == 0){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
now = 1;
}
cout << s2.top() << endl;
}
else if(s == "poll"){
if(now == 0){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
now = 1;
}
s2.pop();
}
}
return 0;
}int main(){
int n,x,k,t;
cin >> n;
for(int i = 0; i < n; ++i){
cin >> x >> k;
t = log(x) / log(2);
if(t < k)
cout << -1 << endl;
else{
cout << int(x/pow(2, t-k+1)) << endl;
}
}
return 0;
}直接被锤爆,根本没问项目,直接从网络安全,计网,操作系统,C++,数据库,分布式,数据结构等方面把我锤了,锤得稀巴烂,近期不投不面了,有阴影。
感觉准备不充分,太久没面技术面了,自我技术都说的磕磕碰碰,他也不咋问项目,直接开捶我。