# TP-Link(嵌入式软件)
# 笔试
选择题:
- 物理层设备
- 可能会出现进程饿死的进程调度算法
- 调用 Fork 后,产生的子进程保留了父进程的什么
- Huffman 编码
- 采用 LRU 算法时,进程访问过程中的缺页次数、缺页率
- 二叉树中序遍历所需栈高度与什么有关
- 利用栈来执行带括号的算术表达式,对于某个表达式所需的最小栈大小
- 排序算法的时间复杂度
- 给出两段程序(递归版本、非递归版本),比较
- 回文字符串的判断(选出一项,补全代码)
简答题:
- 内存越界是什么,内存越界是否会导致程序崩溃,为什么,举例说明内存越界会造成那些后果
- Java 中的 CAS 机制原理(选做)
- 双向链表中的节点替换(补全代码)
- 7 位电话号码,给定超过一百万个的电话号码,对电话号码去重,排序,存储号码的内存 buffer 限制为 1MB
编程题:
选择题、简答题、编程题一共 60 分钟
行测:(每部分 10 分钟)
- 言语理解与表达
- 判断推理
- 图形推理
- 数量关系
# 一面
宏
快速排序、选择排序的基本原理
全局变量、局部变量、静态变量
解决哈希冲突的方法
介绍拉链法的原理
OSI 参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
第一轮面试一共 10 分钟
# 二面
智力题:7g 砝码和 2g 砝码各一个,天平一个,如何用最少次数将 140g 盐分成 50g 和 90g 各一份?
- 正确答案:最少需要操作三次
- 利用天平将 140g 盐分成两份 70g
- 利用 9g 砝码将 70g 盐分成 9g 和 61g
- 利用 2g 砝码与 9g 盐将 61g 盐分成 11g 和 50g
算法题:二叉树的最近公共祖先(力扣 236)
- 先讲思路,再在自己的 IDE 上编程实现(核心代码模式)
最后问了项目,大概 10 分钟左右
第二轮面试一共 40 分钟
# 三面
自我介绍
本科成绩是什么情况?是保研的吗?
为嵌入式软件岗做了哪些相关准备?
计算机网络、操作系统、数据结构与算法学过吗?
数据结构与算法刷了多少题?
TCP 与 UDP 有什么区别?
如何理解 TCP 的可靠传输?
TCP/IP 网络模型是怎样的?每一层对应有哪些协议?
如何用两个队列实现一个栈?
研究生课题的主要内容?目的是什么?是不是自己一个人完成的?成果?
有哪些兴趣爱好?是否拿出摄影作品去参加过学校的展览?骑行都去过哪些地方?
父母的工作
兄弟姐妹的情况
反问:
- 部门 / 分组是怎么确定的?入职以后确定
- 主要用的编程语言是什么?用的最多的是 C/C++ ,会经常使用数据结构与算法、操作系统的相关内容
最后,面试官建议认真学一下操作系统
第三轮面试一共 18 分钟
# SHEIN(算法工程师 - 运筹预测方向)
# 测评
一共包含四个模块,全都是选择题
- 言语表达,10 题,限时 10 分钟左右
- 图表分析,10 题,限时 10 分钟左右
- 图形推理,10 题,限时 10 分钟左右
- 性格测评,158 题,不限时
# 笔试
题型:15 道单选题,2 道算法题,2 道问答题
限时 60 分钟
单选题涉及的知识:
- 机器学习
- python
- 排序算法
算法题:
问答题:
- AUC 的计算
- SQL 语句
# 蔚来(智能调度和控制算法工程师)
# 提前批
# 笔试(大数据的试卷)
10 道单选题:设计模式、概率论相关知识点
9 道不定项选择题:操作系统、数据库相关知识点
3 道算法题(核心代码模式):
# 正式批
# 测评(北森系统)
10 道言语理解,每小题有相应限时
10 道图表分析,每小题有相应限时
10 道图形推理,每小题有相应限时
99 道性格测试,每小题有相应限时
# 三一(算法工程师)
# 测评(北森)
行测,每题都有对应的限时:
- 言语理解与表达,一共 11 题
- 图表分析,一共 10 题
- 图形推理,一共 10 题
性格测评,不限时:
- 98 道选择题:每题需从三个选项中选出最符合、最不符合
- 100 道单选题
# 笔试
一共 30 道选择题(20 道单选,10 道多选),限时 60 分钟:
- 数据结构与算法:图论(最短路径、最小生成树、有向图、邻接矩阵)、栈、动态规划的基本要素、贪心思想、回溯法
- 机器学习相关:线性回归、生成模型、基于二次准则函数的 H-K 算法、感知器算法、统计模式识别分类问题、map-reduce 框架及相关算法、K - 均值算法、判别式模型、决策树的启发函数
- 操作系统:内存管理、线程
- 运筹优化相关:分支定界、TSP 问题的时间复杂度、路径规划算法、应用 Johnson 法则的流水作业调度所采用的算法、无约束优化问题的相关算法、PnP 问题的求解方法
- 排列数与组合数
- 编程语言:C++ 语句、类的静态成员、python 中的复数
# 一面
自我介绍
学习成绩
英语六级成绩
用的什么编程语言
简述利用 matlab 实现的一个算法
对汽车有没有什么了解
建议:
- 后续要加强对汽车相关知识的学习
- 要进一步熟悉一下 matlab,尤其是 simulink
面试一共 6 分钟(邮件里写的 20 分钟)
# 中兴(算法工程师)
# 测评(北森系统)
行测:
- 言语理解与表达,一共 10 题,限时 10 分钟
- 图形推理,一共 10 题,限时 10 分钟
- 图表分析,一共 10 题,限时 10 分钟
性格测评,不限时:
- 98 道选择题:每题需从三个选项中选出最符合、最不符合
- 100 道单选题
# 面试
安排了软件工程师的面试
拒掉了面试
# 用友(运筹优化算法工程师)
# 测评
行测:数量关系、演绎论证、图形推理、图表分析,一共 28 道选择题,限时 30 分钟
性格测评:一共 88 题(每题需从三个选项中选出最符合、最不符合),限时 30 分钟
# 大疆(决策与规划算法工程师)
# 测评
一共 80 道题,限时 80 分钟
- 行测:数量关系,演绎论证,15 题左右
- 性格测试
# 笔试
一共 25 道不定项选择题,限时 60 分钟
内容涉及以下方面:
- ROS
- git
- 多项式曲线、B spline、羊角螺线
- Dijkstra、A*、RRT、RRT* 路径规划算法(特性比较)
- line search、无约束的路径规划、采用 邻接矩阵或邻接表 的 Dijkstra 算法的复杂度
- 判断凸函数、判断凸约束
- 多项式曲线刻画曲率能否为凸约束、庞特里亚金最大化原理、半正定优化是否为凸优化问题
- C++ 模板编程、返回值
- 算法的时间复杂度
- 链表操作的时间复杂度
- unordered_map 的底层实现以及相关特性
- SO ()、SE ()、四元数与自由度
- 计算排列数、计算事件发生的概率、计算数学期望
- 平面空间索引、K-D tree、R-tree、三维空间索引
# 杉数科技(算法工程师 - 运筹优化方向)
# 一面
自我介绍
讲解项目(大概聊了 20 分钟)
KKT 条件
- KKT 条件是最优解的充分条件还是必要条件
- 在什么情况下 KKT 能作为充分条件
- KKT 的具体内容
从 branch-and-bound 、Benders 分解、Largrange 松弛、列生成 四个算法中选择一个算法,讲解其原理以及应用场景
使用的编程语言,有没有使用 C++ 实现算法
给两道场景题,要求建立数学模型(口述):都是排产、排程相关的场景
-
第一道的大概内容:假设你是某饭店的老板,饭店里有一台冰箱可以存放盒饭(每一份盒饭可以保存两个小时),如果盒饭库存不够就需要现场准备。现场准备所需的成本与提前准备的成本不相等,并且,顾客的数量是随机的(有以往的顾客数量信息)。问:如果规划 冰箱存放的盒饭数量 以及 现场所需准备的盒饭数量,以使得总成本最小?
-
第二道的大概内容:假设你是某电子工厂的老板,现要在一年内生产 A、B 两类产品各 5 千万个,若当天生产的是 A 产品,则可生产 a 个,若当天生产的是 B 产品,则可生产 b 个。假设:若当天生产 A 类产品且第二天生产 B 类产品,或者,当天生产 B 类产品且第二天生产 A 类产品,两种情况都会产生额外的成本。即,生产产品的类别的变化,会带来额外成本。问:如何确定每一天生产的产品类别,使得生产产品类别的变化次数最少?
面试官介绍业务(主要是与工厂的排班排程相关的实际问题),并且主要使用 python
反问:
- 会参与 COPT 求解器的研发吗?
- 面试有多少轮(三轮)
面试一共 50 分钟左右(邮件里写的是 60 分钟)
面试官很友好,并且会及时提供引导。面试体验挺不错,虽然很多都不会 hh
# 笔试
一共两道题,24 小时内做完
-
现有一家移动运营商(例如中国移动、中国电信)需要为一座城市建造基站,已知该城市终端用户的所在位置和所需的移动流量,可选的基站建造位置,以及不同类型基站的覆盖范围和最大流量。请帮助基站规划员决策需要布置的基站数量,所选的基站位置以及每小时的基站运行状态(无流量需求时基站可关闭,假设基站可随意开关且没有额外成本),使得该家公司的支出总成本最小,包括基站建造成本以及基站运营成本。
- 假设每个时间段内的终端需求都需要被满足,建立数学规划模型,设计最优的基站建设及运营方案。可根据需要添加合理的前提假设。
- 假设每个时间段内的终端需求不需要都被满足,但是未被满足的流量需求会产生额外成本,请修改模型并简述和模型 1 的差异。
- 如果没有可选的基站位置,城市里的任何位置都可建造基站,请简述如何修改你的方案和模型。
- 如果可选的基站点过多,请简述如何修改模型,使得在可接受的时间范围内求解模型。
- 如果每个终端用户的流量需求不确定,请简述如何求解这个问题。
-
某学生必须在 4 个不同系中选修 10 门课程,每个系至少选 1 门。这个学生将每个系选修课程数目与获得知识量按照 100 分衡量如表格所示。要争取获得的知识量达到最大。
- 针对以上场景:
- 请使用动态规划求解该问题。(编程)
- 请使用混合整数规划求解该问题。(调用任意求解器编程)
- 若 C 的选修课数量不得多于 D:
- 请使用动态规划求解该问题。(编程)
- 请使用混合整数规划求解该问题。(调用任意求解器编程)
- 针对以上场景:
备注:优先使用 python
# 二面
两个面试官,副总裁和业务总监
首先进行自我介绍,讲一讲对杉数的认识,自己的优势
自己对这一岗位的工作规划,可能遇到的问题以及解决方案
介绍项目
反问
# 顺丰科技(运筹优化算法工程师)
# 测评
言语理解、性格测评、情景题
# 笔试
120 分钟
选择题:单选、多选共 34 道题,一共 70 分:主要考察运筹优化算法、概率论相关
编程题:两道,ACM 模式,每题 15 分
-
幸运数:如果一个数在十进制表示下数字 5 出现了不少于 5 次,则这个数是一个幸运数。求:大于 N 的最小的幸运数
-
猜排列游戏:小明有一个由 1 到 n 的整数组成的排列,让你来猜出这个排列是什么。每次可以猜测某个位置的数字,小明会告知你的猜想是 “大了”、“小了” 或者 “正确”。求:在最坏情况下,需要猜测几次,才能在排列的所有位置都得到小明的 “正确” 的回复。
# 小米(运筹 / 强化学习算法工程师)
# 测评(北森系统)
行测:
- 言语理解与表达,一共 10 题,每题都有相应限时
- 图形推理,一共 10 题,每题都有相应限时
- 图表分析,一共 10 题,每题都有相应限时
性格测评,不限时:
- 98 道选择题:每题需从三个选项中选出最符合、最不符合
- 100 道单选题
性格测评的这两个板块直接复用了之前做过中兴的测评
# 笔试(算法方向)
16 道单选题,每题 2 分,主要涉及以下方面的知识点:
- 机器学习
- 图像处理
- 数字信号处理(滤波器、快速傅里叶变换)
- 快速排序、链表操作
- 概率论与数理统计
17 道多选题,每题 2 分,涉及以下内容:
- 栈操作
- 动态规划代码
- 向量范数
- 快速傅里叶变换
- 机器学习(监督学习、生成式模型)
- 矩阵的秩
- 图像处理过程中的噪声
- 凸函数
2 道编程题,每题 17 分,均为 ACM 模式:
- 给定一个数组,每一次可以从数组的最左侧或者最右侧移除一个数,同时,令数字 x 减去移除的这一元素。问:至少需要多少次移除操作,才能使 x 变为 0 。如果无法使得 x 变为 0,则输出 -1
- 输入:一共三行,其中,第一行是一个用 [] 包围一个数字序列(数字与数字之间用逗号分隔),第二行是数字序列的长度,第三行是数字 x
- 输出:一个整数,表示需要的移除次数(无法将 x 变为 0 时输出 -1 )
- 给定两个序列,计算两个序列的卷积和互相关
- 输入:一共两行,分别为两个序列,其中,每一行的第一个数表示序列长度,紧接着一个逗号,然后是用空格分隔的序列
- 输出:一共两行,分别为卷积和互相关的结果,其中,每一行的第一个数表示结果序列长度,紧接着一个逗号,然后是用空格分隔的结果序列
# 美团(运筹优化研发工程师)
# 笔试
四道编程题,每题 20 分:
- 第一题:字符串匹配
- 第二题:数组、哈希表
- 第三题:字符串分割
- 第四题:背包问题
三道多项选择题:
- 第一题,6 分:下列哪些属于分类任务常用损失函数:Softmax 损失、L2 损失、L1 损失、交叉熵损失
- 第二题,6 分:目前对于最近邻分类的研究在于:探索更加合理的 K 值、寻求更接近于实际的距离函数、建立高效的索引、运用更加精确的概率估测方法以取代简单的投票机制
- 第三题,8 分:当想创建新表的时候,hive 输入命令 create table if not exist,以下哪些情况会发生:表名存在时报错、表名不存在时不报错、表名不存在时报错、表名存在时不报错
一共限时 120 分钟
# 一面
面试官首先自我介绍,并介绍事业部的主要工作,介绍面试流程
自我介绍
有没有实习
聊项目
对遗传算法、禁忌搜索等算法有没有了解?
介绍一下遗传算法
如果用遗传算法来求解 TSP 问题要怎么求解?
对禁忌搜索这些算法有没有什么了解?
对机器学习是否有了解?
有没有做相应的机器学习算法实践?
主要用的是什么编程语言?做题用什么语言?
手撕代码,核心代码模式(在牛客上进行的面试,面试官可以直接在系统上出题)
反问:
- 部门的主要业务
- 工作内容
面试一共 45 分钟,其中,25 分钟项目、10 分钟代码、5 分钟反问
# 字节跳动(算法工程师 - 运筹优化)
# 笔试
120 分钟
四道编程题,ACM 模式,分值分别为 20,25,25,30
- 弹珠游戏(动态规划)
- 三数和赛高数组
# 华为(AI 工程师 - 决策推理方向)
# 一次笔试
一共三题,分值分别为 100、200、300,限时 120 分钟
猪场防疫(第一题):猪场现有 N 只猪,编号从 0 到 N - 1 (每只猪无论生死都有唯一的编号)。老李在每只猪生产的时候记录了生产的母猪和出生的小猪,格式为 x y1 y2 y3 ... ,其中,x 为母猪,y1、y2、y3... 为新生的小猪,以上编码均在 0 ~ N - 1 范围内,每只猪可以多次生产,每只小猪都只有一个猪妈妈。现需要检查任意两只猪是否有亲戚关系(两只猪具有相同的祖先),并计算出关系亲疏情况(关系距离,若相同编号则距离为 0)
- 输入:
- 第一行输入总数 N
- 第二行输入后续生产记录行数 M
- 后续 M 行输入生产记录,以空格分隔
- 最后一行输入待检查的两只猪的编号 m1 和 m2
- 输出:
- 一个整数,表示 m1 和 m2 之间的关系距离,无亲戚关系输出 -1
速战速决(第二题):在一个 M 行 N 列的街区中,有一个士兵 S 和一个敌人 E ,标识 X 为无法通过的街区,标识 B 为可以通过的街区;士兵在一个单位时间内可以从一个街区移动到相邻的街区(每次只能水平或垂直方向移动一个街区);士兵每次改变方向时,需要额外花费一个单位的时间(士兵第一次移动一个街区的时候,不用考虑其初始方向,即,只需要一个单位时间即可到达相邻街区)。计算士兵最少需要多少时间才能到达敌人所在的街区
- 输入:
- 第一行两个数字,分别为街区的大小,M 和 N (1 <= M, N <= 1000,M 、N 不同时为 1)
- 接下来 M 行,每行 N 个字母,字母 S 表示士兵所在街区,字母 E 表示敌人所在街区,字母 X 表示障碍,字母 B 表示可以经过的街区(只有一个 S,一个 E)
- 输出:
- 最少需要的时间,当士兵永远无法到达敌人所在街区时输出 -1
# 二次笔试(时隔一个月)
-
字符串压缩,例如,将 "aaBcaBcaBcc" 压缩成 "a3 (aBc) c"、将 "aAABBAABB" 压缩成 "a2 (2 (A) 2 (B))"
-
三叉树中的最大路径和
-
多进制计算器
# 京东
# 笔试
选择题,主要考察算法与数据结构、机器学习相关知识
三道编程题:
-
定义一个字符串为 “好串” :当且仅当相邻两个字母不相同。对于一个仅由 'r' 、'e'、'd' 三种字符组成的字符串,可以将相邻两个相同的字母同时删除,并在其位置生成任意一个字母('r'、'e'、'd' 三种中的一种)。例如,对于字符串 "dedd",可以选择将 "dd" 变成 "r",字符串即变为 "der" 。现给定一个字符串,问:至少需要多少次操作才能将该字符串变成 “ 好串 ”
- 输入描述:一个长度不超过 200000 的、仅由 'r' 、'e'、'd' 三种字符组成的字符串
- 输出描述:一个整数,代表操作的最小次数
-
对于一个长度为 n 的数组,现希望将一些数(不少于 2 个数)染红,满足任意两个染红的数之和都是偶数。问:一共有多少种不同的染色方案?答案对 109 + 7 取模。规定:对于两个方案,只要存在某个数的染色情况不同,则认为是两种不同的方案
- 输入描述:第一行输入一个正整数 n,代表数组长度;第二行输入 n 个正整数 ai ,代表数组的元素
- 数据范围:2 <= n <= 105,1 <= ai <= 109
- 输出描述:一共整数,代表不同的方案数
# 百度
# 笔试
15 道单选题,一共 45 分,涉及知识点:
- SQL
- 快速排序
- 二分查找
- 栈
- 堆串
- ssh 公钥命令
- 内存分配与释放(最佳适配算法)
- linux 系统
- 同步关系和互斥关系
5 道不定项选择题,一共 15 分,涉及知识点:
- linux
- C++
3 道编程题,分值分别为 10 分、15 分、15 分,均为 ACM 模式
-
给定字符串 s ,问:字符串 s 中含有多少个形如 baidu 的子串(即,子串长度为 5,第一、四个字母是辅音字母,第二、三、五个字母是元音字母,并且,子串没有重复字母)
-
已知字符串 str 仅包含 '0' 和 '1' ,每一次可反转字符串 s 中的两个连续字符(例如,"01" 反转成 "10" ),问:是否可以在有限次数内将 str 变成所有字符均相同的字符串(即,所有字符均为 '1' ,或者,所有字符均为 '0' )
- 例如,"101" 可以通过 2 次操作变成 "000" ,输出 "Yes" ;"11111" 无需操作即满足条件,输出 "Yes" ;"1011" 无法变成所有字符均相同的字符串,输出 "No"
- 注:输入含有多组样例,需针对每组样例进行判断并输出
-
给定一个 m 行 n 列的方格,其中,每个小方格有 'r' 、'e' 、'd' 三种字符中的某一个字符。现从左上角出发,每次可以往四个方向(向上、向下、向左、向右)中的某个方向移动一步,但是,不能从字符 'r' 移到字符 'e' 、不能从字符 'e' 移到字符 'd' 、不能从字符 'd' 移到字符 'r' 。问:至少需要移动多少步才能到达右下角。如果无法到达右下角,则输出 -1
- 采用深度优先搜索(回溯)会超时,只能通过 23.08% 的样例
- 需要采用广度优先搜索(没来得及写)
笔试一共限时 120 分钟
# 招银网络科技
# 测评(北森系统)
行测:
- 言语理解与表达,一共 11 题,每题有相应限时
- 图形推理,一共 11 题,每题有相应限时
- 图表分析,一共 11 题,每题有相应限时
性格测评,不限时:
- 98 道选择题:每题需从三个选项中选出最符合、最不符合
- 100 道单选题:需从 非常不符合、比较不符合、比较符合、非常符合 四个选项中选择一个
# 美的(嵌入式软件)
# 笔试
10 道单选,每题 2 分,主要考察操作系统、计算机网络的相关知识
5 道不定项选择题,每题 4 分(少选错选不得分),主要考察操作系统、计算机网络的相关知识
3 道编程题,ACM 模式:
- 给定一个字符串,删除其中连续的多余空格:15 分
- 输入一个十六进制数,将其表述成 32 位二进制数然后反转,再将反转得到的二进制数转换成十六进制输出:20 分
- 给一个数组和一个目标数,判断存在一个组合使得元素和为目标数:25 分
# 中信银行信用卡中心
# 测评(TAS 测评系统)
Talent5 大五职业性格测评:共 138 题,不限时
iLogic 言语推理测评:共 15 题,限时 20 分钟(每题有相应限时)
iLogic 数字推理测评:共 15 题,限时 20 分钟(每题有相应限时)
iLogic 逻辑推理测评:共 10 题,限时 17 分钟(每题有相应限时)
iDriver 职业驱动力测评:共 112 题,不限时
Menlth 心理状态扫描:共 50 题,不限时
# 笔试
30 道单项选择题,每题 2 分,考察 Linux 系统、Java、计算机网络、MySQL、数据结构 相关知识
3 道编程题,ACM 模式,一共 40 分
- 字符串中出现次数不少于 2 次的字母
- 给定字符串,将元音字母都变成小写,辅音字母都变成大写
- 给定 n 行 n 列的矩阵,将矩阵水平方向和垂直方向各翻转一次