物联网云平台开发岗位面试经验分享

大家好,这次为大家分享的是关于物联网云平台开发岗位面试,这是一篇关于更加面向项目和技术的面经详解

面试岗位:物联网云平台开发工程师

💼岗位职责:

  • 负责物联网云平台框架搭建、架构规划与设计,以及架构优化方案。
  • 承担代码编写任务,设定规范和标准,并排查隐患。
  • 进行高并发、高可用、高承载设计。
  • 主导云平台系统的维护、迭代升级。
  • 持续优化公司后端服务的可用性、伸缩性、稳定性。
  • 负责存储系统和海外支付系统开发。

📋任职要求:

  • 精通 Golang 语言,拥有五年及以上业务云平台开发经验;熟练掌握 MySQL 数据库,具备 MySQL 索引优化、查询优化能力;精通多种非关系型数据库如 redis、kafka,了解其使用场景及限制。
  • 精通数据结构和算法,深入理解 golang 并发编程原理,熟悉常用网络开发框架;精通分布式系统,掌握多种服务框架和消息中间件并了解其实现原理。
  • 具有大规模分布式系统的设计和开发经验,能独立完成系统设计及开发。
  • 有云存储、海外支付系统开发经验,熟悉 linux 下 c/c++开发技术者优先。
  • 对音视频开发技术熟悉者优先。

✨面试问题回顾:

一、自我介绍

在这个部分,你需要简洁明了地介绍自己的专业技能、工作经验和项目成果,突出自己与岗位的匹配度。

二、项目业务及难点解决

  1. 项目的业务是什么?怎么做的?难点在哪?如何解决?
    • 消息队列:曾遇到数据倾斜问题,为确保数据不丢和避免重复消费,采取了相应措施。
    • redis:使用 hash 以及 Pipline,对 bigkey 进行拆解。
    • 数据库:进行性能优化,采用分库分表策略。

三、离职原因

以自己的情况阐述自己离职的真实原因,要真诚且合理。

四、redis 分布式锁实现

我们使用 SET key value NX PX milliseconds 命令来实现分布式锁。

其中:

  • NX:只有当key不存在时才会设置成功

  • PX milliseconds:设置key的过期时间为毫秒

这样可以保证在分布式环境中,同一时间只有一个客户端能获取到锁。同时,通过设置过期时间,可以避免因为客户端崩溃导致的死锁问题。

五、设备控制率为何不是 100%
主要是固件存在问题,有 bug。

六、500 万台设备有多少机器

采用了无服务和微服务混合架构。对于MQTT服务,我们使用了5台高性能服务器。这种架构允许我们在保持高可用性的同时,有效地管理大量设备。

七、MQTT 鉴权流程

我们使用AWS的API服务进行鉴权。具体流程如下:

  • 设备连接时,发送认证请求到AWS API Gateway
  • API Gateway调用Lambda函数进行身份验证
  • 验证通过后,返回一个临时token给设备
  • 设备使用这个token连接MQTT broker

这种方式既保证了安全性,又提高了系统的可扩展性。

八、云端如何控制权限

借助AWS服务的权限管理来实现云端权限控制。

九、APP 如何连接 MQTT

MQTT 是一种基于发布/订阅模式消息传输协议,需要对客户端进行鉴权,以确保只有合法的客户端才能连接到服务器并发布和订阅消息。登录成功后生成鉴权文件,然后进行连接。

十、APP 发指令,如何判断有操控权限

利用 MQTT 的权限管理机制。MQTT 服务器可以针对不同的用户、设备和主题设置特定的权限。当 APP 尝试发送指令时,MQTT 服务器会根据预先设定的权限规则进行检查

十一、app 给别的设备发指令,如何拦截

当 APP 尝试给未添加的设备发送指令时,MQTT 服务器会根据其权限管理规则进行判断。如果该设备不在 APP 用户的授权范围内,即未被添加到用户可操作的设备列表中,服务器会返回错误信息,从而实现拦截。

十二、用户调接口如何鉴权

使用 Token 进行鉴权。Token 是一种由服务器生成的加密字符串,包含了用户的身份信息和权限等内容。当用户首次登录系统时,服务器会根据用户的身份验证结果生成一个 Token,并将其返回给用户。用户在后续调用接口时,需要将 Token 作为参数传递给服务器。

十三、不传密码校验

主要通过 Token 实现,具体细节可能因情况而异。

十四、给 app 推送消息怎么实现的

对于 iOS 平台,使用标准的 Apple Push Notification Service(APNS)。

对于 Android 平台,使用 Google 提供的一套推送服务。其中,最常用的是 Firebase Cloud Messaging(FCM)。

十五、gtoken 是怎么实现的,使用了什么加密算法

调用接口后直接保存至 redis,具体加密算法不太清楚。可能因不同的系统实现而有所差异。

十六、一张表有 100 万数据量,1s 可以支持多少次查询?

一般来说,这个问题的答案很大程度上取决于服务器配置、表结构、索引设计等因素。在我们的系统中,经过优化后,一张百万级数据量的表可以支持1000多并发查询。

十七、介绍一下差分升级

其主要思路是对比两个不同版本的软件,找出它们之间的差异部分,然后只传输和应用这些差异内容,而不是整个新版本的软件,从而大大减少升级所需的数据量和时间。

十八、保障升级安全
通过设备校验和升级包校验来保障升级安全。

十九、数据库死锁发生的场景
通常在大事务以及很多读写操作同时进行时会发生数据库死锁。

二十、go 内存泄漏

Go语言虽然有垃圾回收机制,但仍然可能发生内存泄漏。常见的场景包括:

  • 全局变量引用不释放
  • 协程泄露(goroutine leak)
  • 调用C代码时没有正确释放内存
  • 时间驱动事件未正确停止
  • 大量使用defer在长期运行的程序中

二十一、反问环节

  1. 业务:公司主要从事安防业务。
  2. 上班时间:10 点到晚上 8 点。

如果你正在准备物联网云平台开发岗位的面试,希望这篇文章能对你有所帮助。祝大家都能顺利拿到心仪的 offer!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站支持IPv6和不支持有什么区别?

在当今数字化时代,互联网已经成为人们生活和工作中不可或缺的一部分。随着互联网的不断发展,IPv6作为新一代互联网协议,正逐渐被广泛应用。 网站支持IPv6 和不支持IPv6究竟有什么区别呢? 一、IPv6的背景与优势 IPv6是“Interne…

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网,可以使用Windows远程桌面传输文件,或者使用远程看看这款免费的远程桌面软件,它支持在不同的网络之间传输文件,而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs&…

山西的旅游资源那么丰富,为什么很少人去山西旅游呢?

山西作为一个拥有丰富旅游资源的省份,却在游客吸引力方面相对弱于厦门、云南、四川等地,这一现象可以从多个方面来分析。 关于”山西的旅游资源那么丰富,为什么很少人去山西旅游呢?“这个问题,通过以下几点分析&#…

从基础到进阶:直播美颜API集成主播美颜SDK的开发指南

今天,小编将从基础概念开始,详细介绍如何集成直播美颜API,并通过主播美颜SDK实现高级美颜功能,为开发者提供清晰的开发指南。 一、什么是直播美颜API? 直播美颜API是一套接口,允许开发者在直播过程中对视…

如何解析域名到网站?

在现代互联网中,域名解析是用户访问网站的关键过程。用户通过输入易于记忆的域名来访问网站,而背后则是复杂的域名解析机制将域名转换为服务器的IP地址,使得浏览器能够找到并加载目标网站。聚名网详细介绍域名解析的过程及其相关技术。 一、…

shell手册

bash-handbook-zh-CN 目录 前言Shells与模式 交互模式非交互模式返回值 注释变量 局部变量环境变量位置参数 Shell扩展 大括号扩展命令置换算数扩展单引号和双引号 数组 数组声明数组扩展数组切片向数组中添加元素从数组中删除元素 流,管道以及序列 流管道命令序列…

PCIe NVMe SSD 上电初始化全流程

1. 在FPGA中对PCIe IP核中的各种寄存器进行最原始的配置,比如Vendor ID, Device ID, Revision ID, Class Vaule等等 2. HOST首先将PCIe的Bar全写入1,来获取NVMe寄存器的大小,并在内核空间中开辟一块内存(不是真的通过kalloc去开辟…

Vuex:深入理解所涉及的几个问题

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 一、Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 二、Vu…

别找了!包含gpt在内的国内可以使用的Ai网站都在这了【最新可用】

在当今人工智能迅速发展的时代,智能创作与对话平台为用户提供了多样化的功能支持。以下是一些国内代表性的GPT平台,涵盖了从个人到企业的广泛需求,您可以根据自己的需求灵活选择。我们还为您整理了这些平台的链接,方便直接体验。&…

Redis学习Day3——项目工程开发

扩展阅读推荐: 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程,我们还将遇到各种实际问题,例如缓存击穿、雪崩、热Key等问题&…

Ubuntu20.04+ros-noetic配置Cartographer

一、概述 因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统,…

C语言中的磁盘映射与共享内存详解

文章目录 C语言中的磁盘映射与共享内存1. 磁盘映射(Memory Mapping)1.1 磁盘映射的深入概念1.2 mmap函数的详细参数解析1.3 磁盘映射的高级应用场景1.3.1 大文件处理1.3.2 内存共享1.3.3 文件与内存同步1.3.4 内存映射数据库 1.4 完整的磁盘映射代码示例…

np.ndarray和np.array区别;MXNet的 mx.array 类型是什么;NDArray优化了什么:并行计算优化

目录 np.ndarray和np.array区别 np.ndarray np.array 举例说明 MXNet的 mx.array 类型是什么 NDArray优化了什么 1. 异步计算和内存优化 2. 高效的数学和线性代数运算 3. 稀疏数据支持 4. 自动化求导 举例说明 np.ndarray和np.array区别 在NumPy库中,np.ndarray和n…

如何看待IBM中国研发部裁员?

如何看待IBM中国研发部裁员?近日,IBM中国宣布撤出在华两大研发中心,引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展,也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

Java+vue的医药进出口交易系统(源码+数据库+文档)

外贸系统|医药进出口交易系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 仓储部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设…

2024.09.04 校招 实习 内推 面经

🛰️ :neituijunsir 交* 流*裙 ,内推/实习/校招汇总表格 1、校招 | 海康威视2025届校园招聘正式启动(内推) 校招 | 海康威视2025届校园招聘正式启动(内推) 2、校招 | 沃飞长空2025届全球校…

中国书法——孙溟㠭浅析碑帖《三希堂法帖》

孙溟㠭浅析碑帖《三希堂法帖》 全称是《三希堂石渠宝笈法帖》,是中国清代宫廷刻帖,一共三十二册。 清朝高宗弘历收藏了晋王羲之《快雪时晴帖》,王献之的《中秋帖》,王珣的《伯远帖》三种王氏原墨迹。故而把所藏法书之所…

农产品管理与推荐系统Python+Django网页界面+计算机毕设项目+推荐算法

一、介绍 农产品管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的…

2024年9月10日嵌入式学习

今日主要学习了缓冲帧。 Framebuffer(帧缓冲)是Linux系统为显示设备提供的一套应用程序接口,它将显存抽象为一种设备,允许上层应用程序在图形模式下直接进行显示缓冲区的读写操作。 原理:通过内存映射技术向显存空间…