迪瑞 / 华为 / 经纬 / 美行秋招面经合集

近期面试比较少,但还是遇到了一些比较新奇的问题,发出来与牛友们分享,查缺补漏~

迪瑞医疗(软件工程师 - QT - 一面)

C++:

  • 源文件编译成可执行文件的步骤
  • 什么是内存(字节)对齐
  • 引入头文件后编译显示未定义、是什么原因

OS:

  • 进程和线程的区别
  • 线程是如何共享资源的
  • 线程同步有哪些方式

Network:

  • 网络大端和小端字节序
  • 什么是 TCP 粘包、如何解决

Linux:

  • 常用哪些 Linux 命令

Git:

  • 遇到过代码冲突的情况吗、如何解决

Webserver:

  • 了解 Windows 高并发 Socket 模型么
  • 介绍一下 Reactor 事件处理模式
  • 线程池如何动态调整线程数量

华为(通用软件工程师 - 云核心网)

C++:

  • 指针占几个字节
  • 哪些场景会造成内存泄漏、如何解决

OS:

  • 大端存储和小端存储
  • 进程间通信方式
  • 自旋锁的含义与使用场景

Network:

  • 介绍一下五层网络模型
  • ARP 协议是干什么的
  • 网页输入一个 URL 并回车到显示网页、这个过程发生了什么(详细)

Data Structure:

  • 根据 Key 在一亿数据中查找结果、使用什么数据结构
  • 哈希表底层实现
  • 如何解决哈希冲突
  • 计算最短路径有哪些方法(图论)

Leetcode:

  • 数据库在某一时刻的并发连接数(差分数组、类似 No. 1450)
  • 无重复字符的最长子串(No. 3)

经纬恒润(C++ 开发工程师 - 一面)

C++:

  • new 和 malloc 的区别
  • 如何解决 shared_ptr 循环引用

OS & Network:

  • 线程同步有哪些方法
  • select 和 epoll 的区别
  • 如何解决 TCP 粘包问题

gRPC:

  • gRPC 性能如何
  • JSON 和 protobuf 序列化和反序列化的性能对比

美行科技(C++ 开发工程师 - 一面)

C++:

  • 如果 vector 中的元素是类对象、可以使用 sort 排序吗(如何进行范围查找)
  • 如果 map 的 key 是类对象、会以什么样的规则排序
  • 为什么需要将函数定义为虚函数
  • 派生类的虚函数后加 final 关键字、编译器做了什么优化(静态绑定)
  • 如何实现一个 shared_ptr
  • weak_ptr 的用处、为什么不会增加引用计数
  • C++ 使用指针时踩过哪些坑(dynamic_cast、const、浅拷贝)
  • 了解内存破坏的概念吗、如何排查(指针 p 指向的内存被其他线程修改)
  • 什么情况下会出现栈溢出

Network:

  • 介绍一下 HTTP、哪些信息需要被缓存
  • HTTP 缓存策略由报文 header 中的哪个字段控制(Cache-Control)

gRPC:

  • protobuf 和 JSON 格式的优缺点
  • 如果想在 proto 文件的函数接口中扩充两个字段、如何操作
  • proto 文件中每个变量后面的序号 1、2、3 代表什么含义

MySQL:

  • 介绍一下事务
  • 索引有哪些类型
  • 联表查询有哪些方法、区别是什么
  • 计算生日在特定日期的学生数量(count & group by)

Design Pattern:

  • 什么是懒汉单例模式
  • 介绍一下装饰模式的用法和优缺点

Expand:

  • Cookie 和 Session 的区别
#面经#
全部评论
美行怎么样 谈薪了么
1 回复 分享
发布于 2023-10-19 15:40 河北
马克一下,明天再来看
1 回复 分享
发布于 2023-09-27 09:27 上海
老哥签完三方还在面吗)
1 回复 分享
发布于 2023-09-26 20:26 北京
Hugo神!
1 回复 分享
发布于 2023-09-26 19:00 广东
佬 迪瑞go能面吗
点赞 回复 分享
发布于 2024-01-22 17:26 吉林

相关推荐

07-28 15:15
门头沟学院 Java
面试八股环节还好,但是我是力扣战士,面试官让在编译器上写代码类都不会怎么写了,两个算法,字母异位词和策略模式,只写了方法,力扣战士凉透了,希望大家平时还是要在编译器上做题策略模式等一些设计模式,希望大家也进行默写,别像我一样会背不会写字母异位词import java.util.*;public class Main {public static List<List<String>> groupAnagrams(String[] strs) {// 用于存储分组结果的映射,键为排序后的字符串,值为对应的字符串列表Map<String, List<String>> anagramGroups = new HashMap<>();for (String s : strs) {// 将字符串转换为字符数组并排序char[] chars = s.toCharArray();Arrays.sort(chars);String sortedStr = new String(chars);// 如果映射中不存在该键,则创建一个新的列表anagramGroups.computeIfAbsent(sortedStr, k -> new ArrayList<>());// 将当前字符串添加到对应的列表中anagramGroups.get(sortedStr).add(s);}// 返回映射中的所有值(即所有分组)return new ArrayList<>(anagramGroups.values());}public static void main(String[] args) {// 示例输入String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};// 调用方法获取分组结果List<List<String>> result = groupAnagrams(strs);// 输出结果for (List<String> group : result) {System.out.println(group);}}}策略模式// 支付策略接口interface PaymentStrategy {void pay(double amount);}// 微信支付实现class WechatPay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用微信支付:" + amount + "元");// 微信支付具体实现逻辑}}// 支付宝实现class Alipay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用支付宝支付:" + amount + "元");// 支付宝支付具体实现逻辑}}// 银行卡支付实现class BankCardPay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用银行卡支付:" + amount + "元");// 银行卡支付具体实现逻辑}}// 支付上下文(策略持有者)class PaymentContext {private PaymentStrategy strategy;public PaymentContext(PaymentStrategy strategy) {this.strategy = strategy;}public void setStrategy(PaymentStrategy strategy) {this.strategy = strategy;}public void executePayment(double amount) {strategy.pay(amount);}}// 主类和测试代码public class Main {public static void main(String[] args) {// 创建支付上下文PaymentContext context = new PaymentContext(new WechatPay());// 使用微信支付context.executePayment(100.0);// 切换为支付宝支付context.setStrategy(new Alipay());context.executePayment(200.0);// 切换为银行卡支付context.setStrategy(new BankCardPay());context.executePayment(300.0);}}
查看2道真题和解析
点赞 评论 收藏
分享
评论
18
84
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务