华为2018年8月软件开发秋招一面经历

为什么只谈一面?因为参加了一面才知道自己的水平!简历上的熟练和精通请慎重!
自我介绍就不用多说。
先上问题:
1、谈一下new和malloc的区别?
简单说了malloc只分配内存,不能创建对象。
2、析构函数的作用
销毁对象?应该是清理在构造函数中所申请的内存空间。
3、UML设计模式知道吗?有几种设计模式?
懵逼
4、存储器的构成?操作系统学过没有?MMySQL数据库的优点是什么?
懵逼
5、堆和栈的区别说一下
6、信号量的作用
7、linux内核了解吗?有几种锁?
我说的互斥锁和读写锁,考官说的是自旋锁
8、手撕代码:用数组实现栈
当时我一脸懵逼,只用链表写过栈,虽然原理一样,但是不会。还是用链表写的,考官直接说我根本没有理解他的意思,于是重新撕另外一个代码。


#include <iostream>  using namespace std;  #define Max 10 int stack[Max]; int top = -1;  void push(int value)
{  int i = 0;  if (top > Max - 1) cout << "\nThe stack is full!\n"; else {  cout << "Before push, the stack is top->bottom: \n";  if (top < 0)  cout  << "It is empty." << endl;  else {  for  (i = top; i >= 0; i--)  cout << stack[i] << " ";  cout << endl;
       }
        ++top;  stack[top] = value;  for (int j = top; j >= 0; j--)  cout  << stack[j] << " ";  cout << endl;
    }
}  int pop()
{ int tmp;  int i;  if (top < 0)
    {  cout << "The stack is empty" << endl;  return -1;
    }  cout << "before pop" << endl;  for (i = top; i >= 0; i--)  cout << stack[i] << " ";  cout <<endl;

    tmp = stack[top];
    --top;  if (top < 0)  cout << "It is empty" << endl;  else {  cout << "after pop" << endl;  for (i = top; i >= 0; i--)  cout << stack[i] << " ";  cout  << endl;

    }  return tmp;
}  int main()
{
    push(1);
    push(2);
    push(3);
    push(4);
    pop();  return 0;
}

链表实现


#include <iostream>  #include <cstdio>  using namespace std;  typedef struct _node
{  int  data;  struct _node *next;
}node, *pnode;

pnode phead = NULL;  int create(void)
{  //  phead = (node *)malloc(sizeof(node)); phead = new node;  if (phead == NULL)  return -1;  return 0;
}

node *push(int val)
{  //node *p = (node *)malloc(sizeof(node)); node *p = new node;
    p->data = val;
    p->next = phead;
    phead = p; return phead;
}  int pop()
{ if (phead == NULL) return -1;

    node *p = NULL;  int ret = phead->data;
    p = phead;  //free(p);  delete p;  return ret;

}  int main()
{
    create();
    push(10);
    push(20);
    push(30);  cout << pop() << endl;  return 0;
}


9、STL知道吗?写一个compare函数
已经不耐烦,要求5分钟写完,过了一分钟,问你到底会不会?我说不会,我觉得该肯定进不了2面,于是准备收拾东西走人,他又来一句你比较熟悉linux下的开发是吧?我再次懵逼,难道不该说你这么水,可以回去等通知吗(领盒饭)?又问了下面2个问题。
10、进程与线程的区别?
11、进程间通信的方式
上面2个问题,我没有按照书面的解释来,用的是项目中使用的理解来说的。面试官说了一句:恭喜你通过了一面,现在去综合面试区(2面)等待面试。
手撕代码那一关实在是最难熬的一关,还是基础问题,面试之前关于栈、队列部分的实现都是用链表做的,生无可恋!


惊喜,昨天华为发了offer!

#面经##秋招##华为#
全部评论
恭喜楼主啊
点赞 回复 分享
发布于 2018-09-17 19:47
请问你的软件岗具体是什么岗呢?面的是哪里的呢?
点赞 回复 分享
发布于 2018-09-26 16:43

相关推荐

点赞 27 评论
分享
牛客网
牛客企业服务