2019江行智能 后端开发工程师Go 面试题

简介: 【7月更文挑战第7天】

深圳面试,来了之后给了一张试卷,时间半小时。包括一道算法题及扩展以及一页基础题。看题型,应该是多种岗位共享的试题,适合后台开发、驱动开发等岗位,Linux知识居多,也包括一些操作系统,计算机网络和编程语言相关的知识。难度因人而异,有些仅仅知道,有些知识了解背后原理、实现。

题型如下,不分先后:

算法题,要求给出最优解,计算时间复杂度和空间复杂度:

  1. 3个有序数组排列

  2. K个有序数组排列,(此题解法是堆排序)

基础题:

  1. 操作系统上电启动到运行init进程执行前做了什么?

    (1)开机BIOS自检,加载硬盘。
    (2)读取MBR,进行MBR引导。
    (3)grub引导菜单(Boot Loader)。
    (4)加载内核kernel。
    (5)启动init进程,依据inittab文件设定运行级别)

  1. 系统中断机制以及运用

这个简单说下软中断、硬中断、寄存器保存、替换等等。例子包括常见的系统调用socket、read。

  1. 进程、线程、协程区别以及常见进程IPC方式及其实现原理

进程:操作系统分配资源的基本单位。

线程:操作系统调度的基本单位。

协程:有应用层自己负责调度器实现。优点:调度开销小。

常见IPC:共享内存、套接字、信号量、管道、消息队列。

  1. c++ 11智能指针内存管理方式和Golang的GC

这个说了引用计数,然后聊到内存分配的两级配置器。GC不了解。

  1. c++11 智能指针的循环引用怎么解决。

两种方式。1,调用reset主动释放。2. 使用弱引用weak_ptr

  1. docker和虚拟机区别?

轻量级。docker提供虚拟容器,虚拟机提供整个操作系统。

  1. TCP的可靠机制?

停止等待、滑动窗口、拥塞控制。接着谈谈拥塞控制四个算法。

  1. 网页上访问HTTP发生了什么?

DNS、创建网络连接、ARP、三次握手;HTTP协议封装等等顺着顺序说就行了。

  1. 描述竞态以及死锁并举例

指多个任务单元同时访问同一个资源,就会出现并发,竞态的现象。

  1. c/c++ 未定义行为是什么样子?举例

此题没搞懂,未定义的行为怎么去定义,不应该是随机的吗?

  1. 讲讲bootloader和image

知道不多,没有说。

  1. 讲讲Linux分区和挂载

岗位不同,没说。

  1. 谈谈Linux文件系统

知道不多,没说。

  1. 翻译一段英文文章,看了下,内容涉及多线程这一块。

pass。

  1. 动态规划的三个必要条件。

最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
无后效性。即子问题的解一旦确定,就不再改变,不受在这之后、包含它的更大的问题的求解决策影响。
子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。

整体上偏向底层技术,难度中等,有深度,不要求全会,但是会的部分能够搞懂原理最好。

算法题给了个双指针算法,扩展题没想到堆排序。

基础题回答了大部分,涉及驱动部分知识没有讲,也不会。之前准备的redis、mongodb、kafka倒是一点没问,整个面试给人感觉良好,有所得,没有浪费时间。

相关文章
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
206 4
|
3月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
307 0
|
1月前
|
JavaScript 前端开发 Java
【GoWails】Go做桌面应用开发?本篇文章带你上手Wails框架!一步步带你玩明白前后端双端的数据绑定!
wails是一个可以让你使用Go和Web技术编写桌面应用的项目 可以将它看作Go的快并且轻量级的Electron替代品。可以使用Go的功能,并结合现代化UI完成桌面应用程序的开发
345 4
|
5月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
328 61
|
5月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
6月前
|
人工智能 缓存 安全
Go开发遇见的一次Data Race
本文通过一段 Go 语言代码示例,分析了并发编程中的数据竞争(Data Race)问题。代码实现了一个带缓存的内存存储系统,包含 `LRUCache` 和 `MemoryCache` 两个核心组件。尽管在 `MemoryCache` 的 `Set` 方法中加了锁保护,但由于直接调用 `LRUCache` 的 `GetLength` 方法时未加锁,导致底层数据结构在多 goroutine 环境下被同时读写,从而触发 Data Race。文章详细解析了问题根源,并提出了解决方案:为 `LRUCache` 的 `Add` 方法添加锁保护,确保并发安全。
|
7月前
|
Go API 定位技术
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。 本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
438 0
|
11月前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
292 5
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1497 2
|
Go 数据安全/隐私保护 开发者
Go语言开发
【10月更文挑战第26天】Go语言开发
166 3

热门文章

最新文章