58一面

来源:互联网 发布:mac 如何加载字幕 编辑:程序博客网 时间:2024/04/30 12:54

今天,58视频面试。面试时间30分钟,主要问了以下几个问题,

1、项目。
2、无序数组中的第K大数。
说了好几种方法,包括冒泡N次,快排到N位,堆排序找N个,最后拉着我说的建立一个最小堆,问了问,还问了时间复杂度。
3、一个字符串中删除指定的字符。
让我说了下思路,说的可能不太清楚,让我上手写代码。吓得我赶紧先判空。。
#include <iostream>
#include <string>
using namespace std;


void Print(string &st,char ch)
{
int size = st.size();
if(size <= 0 )
return ;
int num = 0;
for(int i = 0; i < size; ++i)
{
if(st[i] == ch)
num++;
else
{
if(num > i)
{
cout<<"error\n"<<endl;
}
st[i-num] = st[i];
}
}
st.resize(size - num);
cout<<st<<endl;
}
void main()
{
string st;
cin>>st;
char ch;
cin>>ch;
Print(st,ch);
}
之后,问,什么情况下会出现num > i 的情况,这个按理来说应该是不会出现的。
4、线程池。5、进程同步(这块问了20分钟)。
让我看项目的时候,发现我用了线程池,直接就拉着线程池和线程同步这块死问,一共30分钟,就这问了近20分钟。包括第六题也是因为我说了我的同步方案,他给我说了第六题,让我来设计。一直到我哑口无言,才停下来。看来这是重头戏。
6、设定一个循环队列,满了和空了都要阻塞,怎么设计。
这个不太会,不过有个大神告诉我,可以考虑一下条件变量。
7、建立数据库索引的时候需要考虑啥。
数据库一点也不会,我说不会数据库,这道题直接跳过。


另外,题外话,面试官长得真是程序员标配,格子衫,爆炸头,小胡须,无敌。

毕竟才是我第二次面试,有点激动。

原创粉丝点击