一、Java
1.equals方法和hashcode方法的区别。
2.Java四种引用类型。
3.Hashmap的实现。
二、计算机网络
1.描述一下HTTP。
2.HTTP的请求头格式。
3.GET请求和POST请求的区别。
4.什么是HTTPS?
5.对对称加密算法和非对称加密算法了解多少?
三、多线程
1.进程与线程的区别?
2.杀死一个进程,会杀死它的所有线程吗?
3.你对进程通信了解多少?
四、设计模式
1.你了解哪些设计模式?
2.能写出单例模式的代码吗?
五、Android
1.Activity生命周期。
2.Android组件有哪些?
六、项目经历
七、数据库
一个sql查询。
八、算法
输入一个网址,将它各级域名倒序,然后按照域名的格式输出。
输入 www.toutiao.com.cn
输出 cn.com.toutiao.www
有没有空间复杂度是O(1)的算法?
//Enal当时写的
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int state=0;
stack<string> st;
string word;
for(int i=0;i<s.size();++i){
if(s[i]=='.' && state==0){
state=1;
st.push(word);
word="";
}else if(s[i]!='.'){
word+=s[i];
state=0;//先写完时,面试官提醒我没有把state置0
}
}
if(word!=""){
st.push(word);
}
while(st.size()){
cout<<st.top();
st.pop();
if(st.size()){
cout<<'.';
}
}
return 0;
}
这个算法的空间复杂度是O(n)别骂了别骂了
tql
这个题记得y总好像说过类似的题
空间 O(1) 的做法是:
-将原串整个翻转
-以
.
为分界再将每个单词内部翻转就可了-用
algorithm
里的reverse
方法翻转很方便害,在大佬面前耍大刀了学到了学到了:)
思路顺手code一下
#include <iostream> #include <algorithm> using namespace std; string reverURL(string &s) { int storeIndex = 0; reverse(s.begin(), s.end());//s = "nc.moc.oaituot.www" for (int i = 0; i < s.size(); i++) { int j = i; while (j < s.size() && s[j] != '.') j++;//找单词结束 reverse(s.begin() + i, s.begin() + j); i = j;//i已经站在.上'.'上,循环结束后在新单词上 } return s; } int main() { string s; cin >> s; cout << reverURL(s) << endl; return 0; }
👍
这个输入已经是O(n)了啊,为什么说空间复杂度是O(1)呢
空间复杂度,是算法执行时需要额外开辟的空间,输入数据的空间不算在里面~~~
哦哦哦,好的好的,明白了