本文首发于 慕雪的寒舍
参加了一次模拟面试,是已经工作的学长面试我的。
记录一下问了哪些问题,括号中为我的回答。
说起来真该打,我竟然没有录屏 以下基于我自己的回忆,顺序和实际问的顺序并不同
因为我还没来得及写cpp的项目,于是就说了自己的python项目,valorant游戏商店查询机器人
github.com/Valorant-Shop-CN/Kook-Valorant-Bot
现在想来,我应该提到自己采用了缓存机制,会避免对重复的商店图片二次画图。数据是存在leancloud上的。
由于我忘记了weak_ptr,所以也忘记了循环引用问题……
这里因为我刚刚才学习到,所以回答的还算完整
没了解过(甚至没听过这个东西),直接跳过了学长建议我去学习一下
https://leetcode.cn/problems/longest-palindromic-substring/description/
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 输入:s = "cbbd" 输出:"bb"
我用的是最简单的暴力办法,在面试环节,这么做肯定要扣分的(
class Solution {
public:
bool isReverse(const string& s,int begin,int end)
{
while(begin<end)
{
if(s[begin]!=s[end])
{
return false;
}
begin++;
end--;
}
return true;
}
string longestPalindrome(string s) {
if(s.size()<2)
{
char a = s[0];
string tmp="";
tmp+=a;
return tmp;
}
int i=0,j=0;
int max = 0;
int index[2];
for(i=0;i<s.size()-1;i++)
{
for(j=i+1;j<s.size();j++)
{
bool ret = isReverse(s,i,j);
if(ret && (j-i)>max)
{
max = j-i;
index[0]=i;
index[1]=j;
cout<< "i " << i << " j " << j << endl;
}
}
}
cout<< "index " << index[0] << " - " << index[1] << endl;
string tmp(s,index[0],max+1);
return tmp;
}
};
由于模拟面试只有1h,写完oj之后时间就到了。我感觉我答的挺差的,有好多都记不住了。
我咨询了学长要不要自己去了解以下C++17和C++23的新增内容
学长建议看看《STL源码剖析》和《c++primer》这两本书,精进一下已有知识