这次面的是一家头部医疗器械公司,有了第一次失败的经历,这次做了相对充分的准备。依然没有投递,公司技术人员先是直接打电话问了一些问题,个人觉得答得还不错,很顺利,不久HR打电话通知二面。
面试时间:03月08日 19:00
面试职位:软件工程师
先是做了一份题如下:
1.最大公共子串
char* longest(const char* str1,const char* str2){
int len1 = strlen(str1);
int len2 = strlen(str2);
int max = 0.num = 0;
int start, start1, start2;
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
start1 = i;
start2 = j;
while((start1<len1)&&(start2<len2)&&(str1[start1++]==str2[start2++])){
num++;
}
if(num>max){
max = num;
start = i;
}
num = 0;
}
}
char* strnew = new char[max];
strncpy(strnew,str1+start,max);
return strnew;
}
2.判断回文数
bool palindromic(unsigned int n){
unsigned int m = 0,tep = n;
while(tep>0){
m = m*10 + tep%10;
tep/=10;
}
return (m==n);
}
3.不使用库函数将字符串转换成数字
int str2int(const char* str)
{
int temp = 0;
const char* ptr = str;
if ( *str == '-' || *str == '+' )
{
str++;
}
while ( *str != ' ' )
{
if ( ( *str < '0') || ( *str > '9' ) )
{
break;
}
temp = temp * 10 + (*str - '0');
str++;
}
if ( *ptr == '-' )
{
temp = -temp;
}
return temp;
}
4.C++的四种类型转换
- const_cast:去const属性;
- static_cast:基本类型转换;
- dynamic_cast:多态类之间的类型转换;
- reinterpret_cast:不同类型的指针类型转换;
5.删除两个双向链表中相同的节点
struct Node
{
int data;
Node *front, *next;
};
void deleteCommonNode(Node *pHeadA, Node* pHeadB)
{
if(pHeadA == NULL || pHeadB == NULL)
return ;
std::map<int,Node *> mapNode;
Node *tmp = pHeadA;
while(NULL!=tmp)
{
mapNode[tmp->data] = tmp;
tmp = tmp->next;
}
Node *tmpb = pHeadB;
while(NULL!=tmpb)
{
if(mapNode[tmpb->data] != NULL)
{
//存在相同data,从A和B中删除
if(tmpb == pHeadB)
{
pHeadB = pHeadB->next;
pHeadB->front = NULL;
}
else
{
tmpb->front->next = tmpb->next;
tmpb->next->front = tmpb->front;
}
delete tmpb;
Node *tmpa = mapNode[tmpb->data];
mapNode.erase(tmpa->data);
if(tmpa == pHeadA)
{
pHeadA = pHeadA->next;
pHeadA->front = NULL;
}
else
{
tmpa->front->next = tmpa->next;
tmpa->next->front = tmpa->front;
}
delete tmpa;
}
}
}
做完之后,应该是一个小组长,看了我的试卷后对我最后一个题的解不是很满意,于是开始聊天,问了很多modern C++的内容,因为工作只涉及到C++ 98/03,故面试官不是很满意。后来来了一个应该是这个人的上级对我进行二面,主要之前项目的一些问题。这次表现的还可以,虽然之前做的项目在他们看来比较简单。
过了几天,HR打电话来问了期望薪资,我报18,HR说综合笔试和面试情况只能给到15*14,感觉到我不想去之后加了1K,我依然拒绝了。