文远知行面试凉经 感知算法 一二三四面

首先感谢文远某HR,回复速度很快,属于秋招到现在遇到最好的几个HR之一(虽然文远HR整体很抽象)

一面:
问项目,问实习经历
蔚来实习这段问得很细,基本就是整个项目打碎一块一块问;Momenta的实习因为描述得比较详细所以没怎么再深入提问

手撕:线段求交点
写得一般,有点混乱,被问到是否可以减少拷贝复制,赶紧回答自定的struct可以指针传,其它参数可以传const引用,面试官说问题不大

二面:
面试约得很早(7~9点),面试官人在美国,早上起个大早脑子不清楚,对着面试官直呼HR
偏向聊天,问两段实习中的难点和亮点
1. 问对于基于规则的lidar点云前处理过程中使用OD印证是否会存在循环推断
2. 问基于极坐标系的恒定步长采样存在什么问题,是否有其它解决方法
3. 问我本科专业和硕士专业为我从业带来哪些相关方法或者优势(本科力学,硕士土木),只能乱扯说涉及到矩阵论方法和大量几何相关算法,而且车辆从传感器数据辨识到操控本质也是非线性动力学系统说得自己绷不住了

手撕:
写一个shared_ptr,实现拷贝构造、析构、委托构造,并验证引用计数对不对
这块写得磕磕巴巴,准备了半天算法结果是写类,最后本来要让我写线程安全的引用计数,时间不够没写。疑似这里要挂我了,写着写着给面试官写麻了

三面:
纯coding,没笔试是吧,这里等着呢😡
1. emplace_back(move()), push_back(move()), emplace_back(), push_back()速度排序
2. 描述下vector底层实现,扩容是怎么扩容的,扩容的时候有哪些构造方式
3. reserve和resize什么区别,没有默认构造、拷贝构造只有移动构造等的自定义类可以resize吗
4. 引导计算:扩容复杂度,总共移动多少次?元素总共构造多少次?对元素的总操作次数多少次?从空vector开始一直emplace_back的期望复杂度(或者平均复杂度)是多少?(涉及到一个幂级数求和)
5. 手撕,一个array,有若干个数字,一些query,表示区间端点,需要对区间求和。array中的元素可以任意乱序存在,问所有query的最大值是多少。刚开始想区间合并,后来经提示发现没必要,写得很丑陋,要得能当场调出来,他们assert样例都准备好了...调是调出来了,但是被指出有很多多余的操作,有点寄

四面:
仍然是美国面试官,貌似是大leader,压力很大
1. 如何避免梯度消失?(要求4种+的解决方法...)
2. batch normalization是啥?给下公式
3. resNet听过吗,解释下?
4. 手撕:写一个哈夫曼树问:你这个树1w个节点占多大内存?(说字节和kb都不行,非要说mb...)你这个树对于1000个叶子结点总共会有多少个结点?(答不出来)

我宣布第四面是目前最搞心态的一场面试,也不问项目履历,就追着深度学习问,手撕也是以前几乎没怎么练过的,再加上早上7点开面6点半起了个大早,压力非常大,还有就是那种在技术高手眼皮下的无处遁形感而且貌似和面试官有沟通问题,他的问题重复三四遍都没听懂最寄的一集
--------

更新:四面挂......
#文远知行# #自动驾驶# #面经##软件开发笔面经#
全部评论
还得是你啊哥
1 回复 分享
发布于 2024-08-01 15:35 云南
有兴趣来拼多多跨境做增长算法吗
点赞 回复 分享
发布于 2024-08-01 15:12 上海
这个share_ptr真的不 提前准备类似的,能做出来?
点赞 回复 分享
发布于 2024-08-02 11:44 重庆
这么难的吗😅😅
点赞 回复 分享
发布于 2024-08-03 00:44 上海
太吓人了
点赞 回复 分享
发布于 2024-09-26 16:08 辽宁

相关推荐

头像
01-21 00:23
已编辑
深圳大学 golang
博主目前是一名Go语言从业者,现在某独角兽企业担任后端开发工程师,6年编程经验,将近2年的Go语言大型微服务项目开发经验。目前专注于Go语言领域的程序逻辑/架构设计/项目实践等。今天想和大家聊聊适合Go语言开发者的从业选择,帮助牛友们更有针对性地投递目标岗位,提高求职效率。一、Web后端开发在Web应用的架构体系里,后端开发是支撑整个系统稳定运行的关键支柱。Go语言凭借其出色的网络编程能力与高效的运行速度,成为Web后端开发的理想之选。Go语言拥有丰富的标准库,能够轻松实现HTTP服务器的搭建,极大地提升开发效率。例如,使用Go标准库中的 net/http 包,几行代码便能构建出一个简易的HTTP服务器。同时,诸多成熟的Web框架如Gin、Beego等,进一步简化了开发流程,让开发者能够将更多精力投入到业务逻辑的实现中。这些框架不仅具备高效的路由系统、中间件支持,还拥有良好的扩展性,能够满足不同规模Web应用的需求。写过Go语言入门项目bluebell的小伙伴应该对这部分有所体会。在实际应用中,像字节跳动等众多互联网企业,其部分核心业务的后端服务便是基于Go语言开发,以应对海量用户的高并发请求,确保服务的稳定与流畅。这也是我目前所从事的方向。二、网络编程网络编程领域,Go语言的优势尤为显著。其内置的轻量级线程goroutine和用于实现并发安全数据传输的channel,使得开发者能够轻松编写高效且并发性能卓越的网络程序。无论是开发网络服务器、客户端,还是实现网络协议,Go语言都能游刃有余。例如,在开发即时通讯应用时,通过goroutine可以轻松处理大量用户的连接请求,利用channel实现消息的高效传递与同步,确保消息的实时性与准确性。而且,Go语言对TCP、UDP等常见网络协议的原生支持,使得开发者能够方便快捷地构建各类网络应用,如分布式系统中的节点通信模块、网络爬虫程序等。许多大型网络服务提供商,利用Go语言开发的网络组件,高效地处理着全球范围内的海量网络流量,保障网络服务的稳定与高效。三、中间件开发中间件作为连接不同软件组件的桥梁,在现代软件系统架构中起着不可或缺的作用。Go语言凭借其高性能、低内存占用的特性,在中间件开发领域占据了重要地位。开发者可以利用Go语言开发出功能丰富的中间件,如缓存中间件、消息队列中间件、日志记录中间件等。以缓存中间件为例,通过使用Go语言开发的高效缓存算法和数据结构,能够快速地对数据进行缓存与读取,极大地减轻数据库的压力,提升系统整体性能。消息队列中间件则可以借助Go语言的并发处理能力,实现消息的可靠异步传输,确保系统在高负载情况下的稳定运行。在企业级应用开发中,这些基于Go语言开发的中间件能够无缝集成到现有系统架构中,优化系统流程,提高系统的可维护性与扩展性。比较知名的用Go语言实现的中间件有etcd、docker、kubenetes等。这里推荐一下极客兔兔七天系列教程,极客兔兔的七天系列项目涵盖了Web框架、分布式缓存、RPC框架和ORM框架,包括我之前推荐过的bitcask项目,对有志于从事基础架构或中间件开发的小伙伴来说都是非常不错的入门项目。四、区块链区块链技术作为一种新兴的分布式账本技术,正在全球范围内引发各行业的变革。Go语言因其高度的安全性、出色的并发性能以及对分布式系统的良好支持,成为区块链开发的热门语言之一。在区块链项目中,Go语言被广泛应用于区块链底层协议的实现、智能合约的开发以及区块链节点的构建。例如,以太坊的Go语言客户端Geth,为以太坊网络的稳定运行提供了坚实保障。Go语言开发者可以参与到区块链核心算法的优化、共识机制的实现以及跨链技术的研究等关键工作中。随着区块链技术在金融、供应链、医疗等领域的深入应用,Go语言在推动区块链技术创新与落地应用方面发挥着至关重要的作用,拥有广阔的发展空间。五、游戏开发在游戏开发领域,Go语言虽然不像传统C++那样广为人知,但它正凭借自身独特的优势逐渐崭露头角。特别是在游戏服务器端开发方面,Go语言展现出了巨大的潜力。Go语言的高性能和高效的并发处理能力,使其能够轻松应对大量玩家同时在线时产生的高并发请求。通过goroutine和channel,开发者可以高效地管理游戏中的各种资源,如玩家连接、游戏状态更新、数据存储与读取等。同时,Go语言的跨平台特性使得开发出的游戏服务器能够在不同的操作系统环境中稳定运行。一些新兴的游戏工作室已经开始采用Go语言开发游戏服务器,以提升游戏的性能和稳定性,为玩家带来更加流畅的游戏体验。此外,在开发一些轻量级的网页游戏或者游戏辅助工具时,Go语言的简洁性和快速开发特性也能发挥重要作用。比较知名使用Go语言作为游戏开发语言的游戏厂商有腾讯、网易、叠纸游戏等。以上就是我总结的五个Go语言学习者适合从事的大方向。之所以写这篇文章,主要还是看到网上许多小伙伴不清楚Go语言相较于其他编程语言的优势,自然也就不知道Go语言在实际工作中的应用领域。明白了Go语言的优势和应用领域,大家就可以找到自己感兴趣的领域,专注地去学习相关领域的专业知识了。等到大家以后在自己的领域有所心得,回过头来往往会发现:选择方向的意义要远远大于编程语言的选择。掌握一门编程语言往往只是敲门砖,真正让我们成为一名合格开发者的,是对于行业的深刻认识和自己独到的理解,这才是我们身为软件工程师的核心竞争力!#牛客AI配图神器#
投递叠纸游戏等公司10个岗位
点赞 评论 收藏
分享
评论
22
55
分享

创作者周榜

更多
牛客网
牛客企业服务