建设银行 u盾不弹出网站,厦门市做网站优化,百度游戏排行榜,系统开发的需求分析阶段的重要工作之一是文章目录 实习第一面准备提问相关算法相关 第一面结果提问环节 总结 实习
第一面准备
提问相关
操作系统有哪些功能
进程管理#xff1a; 进程调度、进程同步和通信、多任务处理 内存管理#xff1a; 内存分配、虚拟内存技术、内存保护 文件系统管理#xff1a; 文件存储… 文章目录 实习第一面准备提问相关算法相关 第一面结果提问环节 总结 实习
第一面准备
提问相关
操作系统有哪些功能
进程管理 进程调度、进程同步和通信、多任务处理 内存管理 内存分配、虚拟内存技术、内存保护 文件系统管理 文件存储、目录管理、文件保护和权限 设备管理 设备驱动程序、设备操作、IO操作管理 网络管理 网络连接、数据传输、网络共享
CLI运行一个用户程序整个过程发生了什么
命令解析查找对应的可执行文件 在环境变量path中寻找 创建新进程和资源分配 创建新进程通过**fork()**系统调用复制当前进程的所有内容创建当前进程的副本的子进程子进程执行程序执行**exec()**系统调用将自身的代码和数据替换为目标程序的代码和数据子进程变成用户要执行的程序分配资源为新进程分配内存、文件描述符、CPU运行时间 文件描述符会继承父进程的重新针对当前进程分配内存空、加入CPU运行队列 加载程序 将可执行文件加载到内存中加载器将指令和数据加载到内存的适当位置动态链接加载动态链接库到进程的地址空间 程序开始执行 加载完成后新进程开始执行程序的入口main函数等待进程调度 程序终止和资源清理 释放资源、进程表更新进程表中移除该数据、父进程通知调用wait来获取子进程的终止状态 显示输出和返回状态码
程序怎么从磁盘的二进制字节码进入内存变成进程的
查找并读取可执行文件加载器工作 读取可执行文件头确定文件结构、验证文件格式、解析段表确定数据段、代码段的位置和大小 内存分配 分配虚拟内存、设置内存映射 加载段到内存 懒加载或者立即加载 动态链接设置运行环境 初始化堆栈设置程序的入口点 执行程序
TCP/IP五层是怎么封装的
应用层 生成数据例如一个HTTP请求数据格式化并准备传递给传输层。 传输层 数据分段添加TCP头部包含源端口、目标端口、序列号、校验和等信息。形成传输层数据单元segment 网络层 网络层如IP在传输层数据单元前添加IP头部包含源IP地址、目标IP地址、协议类型、校验和等信息。形成数据包packet 数据链路层 数据链路层如以太网在网络层数据包前添加帧头帧头包含源MAC地址、目标MAC地址、类型字段等信息。形成数据帧frame。 物理层 数据帧被转换为物理信号如电信号、光信号并通过物理介质传输。
应用层数据↓
传输层封装TCP头部↓
TCP段↓
网络层封装IP头部↓
IP包↓
数据链路层封装帧头和帧尾↓
以太网帧↓
物理层传输物理信号协程和线程的区别
切换开销 线程调度是由内核负责协程调度是由用户自己负责。协程的切换比线程快因为不需要从用户态切换到内核态。线程切换改变的寄存器和状态量比协程要多很多。 调度方式 线程是抢占式调度频繁切换线程系统开销大。协程是协商式调度协程执行完毕主动释放CPU切换次数少性能高。 内存大小 线程的栈在创建时就已经制定了8MB协程的栈是KB级别的。线程过多占据的资源会比较多导致系统崩溃协程可以成千上百。线程栈是固定大小的协程的展示可以收缩和扩容的。
如何书写结构体运行效率更高
内存对齐和填充 处理器从内存读取数据时通常以块如4字节或8字节为单位进行。合理安排内存减少填充时间减少内存访问时间。 缓存局部性 尽量将可能一起使用的成员放在一起缓存命中率高。 避免不必要的嵌套 减少结构体的嵌套 使用位域优化 对于特定小范围数据限定其使用的位的数量 使用编译器优化 编译器选项使用编译器提供的优化选项和指令如__attribute__((packed))来优化结构体
C函数调用为什么使用栈来实现
栈是一种后进先出LIFO的数据结构函数调用过程具有天然的LIFO特性一个函数调用可能会触发另一个函数调用而每个函数在完成时需要返回到调用它的函数。自动管理内存简单高效 只需要调整栈指针就能实现栈帧的分配和释放 递归支持多线程支持 每一个线程有自己的栈空间独立管理各自的函数调用和返回互不干扰。
linux和window之间进程管理的区别
进程模型在Linux中 进程和线程都是通过task_struct结构体来管理的。线程是轻量级进程它们共享同一个进程的资源。通过fork或者clone创建一个进程新建进程是父进程的一个子进程 windows 在Windows中进程是包含一个或多个线程的容器。每个进程都有一个进程控制块PCB线程有各自的线程控制块TCB。Windows使用CreateProcess()函数创建新进程。这个函数创建一个新的进程及其主线程并初始化新进程的执行环境。
死锁产生以及破坏死锁的条件
两个以上进程并发执行争夺资源相互等待的现象。 互斥条件持有并等待不剥夺条件环路等待 避免死锁的条件 加锁顺序使用资源的有序分配法来破坏环路等待加锁时限请求某一个资源超过一段时间没有获取到自动释放。死锁检测当一个线程请求锁失败时这个线程可以遍历资源的关系图看看是否有死锁发生。
进程通信的几种方式哪种最快
管道通信消息队列共享内存最快信号信号量
MySQL索引怎么建底层原理模糊查询走不走索引
索引建立 通过CREATE INDEX语句创建索引除了主键索引其他都是要手动创建 索引底层原理 B树索引实现B树的基本特征索引查找过程 模糊查询与索引 模糊查询不利于索引的使用。因为模糊查询的匹配方式可能导致索引失效使得MySQL无法有效地利用索引加速查询
MySQL事务怎么防止中断日志
WALWrite-Ahead Logging机制数据库的持久化设置文件系统缓存与硬件缓存
了解线段树嘛
平衡二叉查找树根节点表示一个完整的单元区间内部节点将整个区间划分成更小的区间。实现数据的查找
C面向对象的设计原则
单一职责原则 一个类应该只负责一个功能领域的事务 开放-封闭原则 应该对扩展开放对修改封闭 里氏替换原则Liskov Substitution PrincipleLSP 子类型必须能够替换其基类型而不影响程序的正确性 依赖倒置原则Dependency Inversion PrincipleDIP 高层模块依赖于抽象原则 接口隔离最小知识原则合成/聚合复用原则
算法相关
medium 最大雨水面积
具体链接这里再补一个反正法证明这个方法是最优的
三数之和
具体链接
考试的最大困扰度
没做过今天晚上要做一下题目链接具体完成链接
第一面结果
不知道明天面试的怎么样一会睡前再把所有的看过的八股题目全部都过一遍然后早上起来在背一遍。 总结如果还想投华为就需要对一门语言十分精通华为主要是语言的特性问的比较多并不会问很多八股内容。所以并不需要花太多时间去准备八股的内容。除此之外还是需要好好刷一下算法尤其是做过的题目他会直接给你一个leetcode链接然后让你开始现场写。其实心里还是有点失落毕竟很想去华为但是自己确实准备的不怎么样好好准备一下秋招。下面回顾一下整个面试过程中的所有的问题
提问环节
以后应该不会看C了这里暂时就不准备整理了以后的我的语言栈就是java。 C的内存管理 *
介绍一下虚函数和纯虚函数有什么特性
定义虚函数Virtual Function是指在基类中使用关键字 virtual 修饰的成员函数。它允许在派生类中重新定义覆盖这个函数。
特点
动态绑定使用虚函数可以实现动态绑定Dynamic Binding即在运行时确定调用哪一个函数版本而不是在编译时。这使得程序可以在运行时根据实际对象的类型来调用相应的函数。 多态性虚函数是实现多态性的基础。通过虚函数基类的指针或引用可以调用派生类的函数版本。 基类和派生类在基类中声明为虚函数的成员函数在派生类中可以重新定义覆盖。覆盖后的函数也默认是虚函数不需要再显式使用 virtual 关键字。
纯虚函数 定义纯虚函数Pure Virtual Function是指在基类中声明但不提供实现的虚函数。纯虚函数在声明时使用 0 语法。
特点
抽象类包含至少一个纯虚函数的类称为抽象类Abstract Class。抽象类不能直接实例化对象。 必须覆盖派生类必须覆盖实现纯虚函数否则派生类也将成为抽象类不能实例化。 接口设计纯虚函数常用于设计接口强制派生类实现某些特定的功能。
智能指针的相关操作
python有哪些数据结构
python中的list有什么特性
总结
以后如果还是想去华为就得专精一门语言把关于语言的所有的八股都好好看一下了解语言最底层的一些特定还有一些特征要专精。他是不限制语言的所以要好好准备一门语言专精刚好也减轻我的一部分压力。然后数据库和redis也得好好准备一下。本次面试最难受的就是我知道他的套路让我选择了但是我没有一个语言是擅长的只能说给你选了三天路但是你一条路都不会所以只能被毙掉情理之中。下一步好好看看java专精一门语言即可不要再其他语言上花时间了。