华为二面与主管面面经,已成为华为池子里的养的鱼。

二面问题:

自我介绍3min,手撕代码15min,项目15min,基础知识考察30min
自我介绍和项目这两个部分,我就不赘述了,主要分享基础知识考察的题目和手撕代码的题目。

基础知识

1.new创建对象的过程
答:
  1. 创建空对象 var p = {};
  2. 设置新对象的__proto__属性指向构造函数的prototype对象 p.__proto__ = ClassA.prototype; (涉及原型链的知识);
  3. 执行构造函数中的代码,函数中的this指针指向新实例对象(new关键字可以改变this的指向)
  4. 将初始化完毕的对象的新对象地址,保存到等号左边的变量中

2.多态的几种表现形式
静态多态(编译时确定函数地址):函数重载运算符重载
动态多态(运行时确定函数地址):派生类虚函数实现运行时多态

3.进程与线程
进程是最小的分配资源单位,线程是最小的执行单位
Linux内核并不区分线程和进程,只是在用户层面进行区分。所以,线程的所有操作函数都是库函数(用户空间),不是系统调用(内核空间)。
使用线程的目的是在执行只需要CPU资源的代码时,可以更为灵活的调度,减少创建和销毁的开销。

4.进程间通信
  1. 管道pipe:父子进程间读写同一块缓冲区
  2. 命名管道FIFO:任意进程间读写同一块缓冲区
  3. 消息队列:消息的链表,存放在内核中。因为管道只能处理无格式字节流及缓冲区大小固定,而信号能传递的信息很少,所以有了消息队列才处理上述场景。
  4. 共享内存:最快,各个进程读写同一块内存,从而实现同步和通信,一般与信号量等配合使用
  5. 信号量:计数器,用于控制多个进程对共享资源的访问,常作为一种锁的机制,一种同步手段
  6. 套接字:可用于不用主机间的进程通信
  7. 信号:用于通知接收进程某个事件已发生。信号表由各个操作系统提供。
5.加锁顺序
设置加锁顺序可以解决死锁问题,如果对于每对互斥锁(s, t),每个进程和线程都按照相同的顺序对他们进行加锁,那么这个程序就是无死锁的。

6.TCP握手
第一次:客户端向服务器发送SYN包,申请建立连接
第二次:服务器向客户端发送SYN和ACK包,宣告客户端到服务器的连接顺利,并申请服务器到客户端的连接
第三次:客户端向服务器发送ACK包,宣告服务器到客户端的连接顺利
目的是确保客户端和服务器都能正常 接收 和 发送。

7.TCP滑动窗口
是一种流量控制的方法,接收方和发送方约定好窗口的大小,并在过程中实时更新,使得接收方可以一次性发送多个分组,提高了效率。

8.设计模式
单例
9.shell
常见的shell语法
10.数据库
SQL语句

手撕代码:

m*n的数组,其中均为非负整数,从右上走到左下,只能向右或者向下走,请问路径的最大的乘积是多少。
例子:
2 3 
1 2 3
2 0 1
最大为12。
思路:使用动态规划,从数组最上面一行开始,往下;每一行从右往左计算。也可以使用回溯法,但时间复杂度更大。

主管面

内容:自我介绍3min,对自我介绍的追问5min,项目20min,开放题10min
同上,涉及隐私的部分不过多赘述,仅描述开放题。

开放题

1.你最近做过的最让你有成就感的事?
2.你做过的最失败的是?
回答思路:重要的不是你做的什么,而是你对过去经历的总结和反思,你的语言表达能力和团队协作能力。主管面考察的重点,是你是否是一个不会自我反思,且无法和他人进行合作的人。
#23届秋招笔面经#
全部评论
啥bu?为啥我的二面问的特别少,做完题问了两句就结束了
1
送花
回复
分享
发布于 2022-09-29 17:37 天津

相关推荐

7 31 评论
分享
牛客网
牛客企业服务