面经--广联达【闪耀星】2022届暑期实习生-人工智能工程师

一面

1.自我介绍
2.笔试的时候前两个题写得很好,但第三题没做出来,现在你能大致说一下你能想到的思路吗?(这个题到现在我还没做出来,求大佬)
答:第三题挺难的,我有两个已经实现过的思路,但都有缺陷。第一个是贪心算法,只要能开枪我就开,只要在最后的时候判断一下保证最后一颗子弹打中最后一个目标就行了,这种方法缺陷也很明显,如果敌人的愉悦度是排序数组,那么方法可行,如果不是,那么就会出现因小失大的现象。第二种方法,贪心算法的变体,我先计算打一轮子弹所需的时间,即开枪打完换弹需要使用的时间,按照时间对敌人数组进行切片,然后用贪心算法找切片内的最优解,最后最优解相加就得到了最终解,这种方法也有局限,就是相邻两个时间切片AB,A中尾部跳过的敌人可能与B中头部的敌人组合产生更优的解。再后来想了第三种解法,但没有去实现,还是时间切片,但我不会一次性全部切分完,而是一个一个切,上一个求出最优解之后剩余的可用敌人可以加入到下一次切片中。
3.笔试的前两道题你都用很少的代码量就实现了,那么你认为好的代码应该是什么样的?
答:这个问题网络上有着很好的一些规范,而且在python中也有很多推荐的风格如PEP8等,在我看来,抛除基本的功能实现和鲁棒性,好的代码应该有三个特点:高可读性,低代码量,高扩展度。高可读性要求写的代码其他人拿过去要能看的懂,现在都是协作做项目,很多时候需要代码的交流,注释,变量和方法的命名要有规范性,不能让别人产生混淆或者搞不清在做什么;低代码量表示代码要尽量简练一些,一个功能可以10行实现,就不要写100行,代码越长,无论是debug还是阅读都很困难;第三个高扩展度也是从协作的角度说的,写代码的时候尽量模块化接口化,让别人在整合代码的时候容易上手,而不需要做大量适配性的工作。
4.你刚才说到的这几点我也很认同,那么你更倾向于写简练的代码还是详细的代码?(详细的代码就是按部就班的实现功能,面试官用了另一个词,我忘了)
答:我更倾向于简练的代码。其实简练的代码和是否详细是否有可读性并不冲突。简练不一定指代码量少,而是模块化,不花哨,没有很多旁支末节的东西,而且一定要有必要的注释,但不是每一行都要加注释。
5.说一下什么是面向对象编程。(这个回答得不好,因为很基础都没有在意过)
答:面向对象编程是相对于面向过程来说的。面向对象就是我在实现功能的时候将任务抽象成一个个体,个体自身具备一些特点,个体一起完成功能,这个个体就是对象,在C++或者python中最有代表性的就是class,定义一个class就是对个体进行抽象,实例化class就是具象个体为操作对象。面向对象的好处就是模块化、高扩展性以及容易修改。
6.说一下多态。(其实我知道多态具体是啥,但当时一时提笔忘字,跟脑子里的东西对不上号了)
答:抱歉,对这个词有些陌生又熟悉,但一时想不起来是什么。
7.说一下列表和链表的区别。
答:在数据结构特点上,列表是一种从栈中分配空间的数据结构,在使用时需要初始化大小,并大小始终固定,访问时依下标对元素进行访问,插入删除操作比较复杂,需要变动很多元素;链表时一种从堆中分配空间的数据结构,在使用时无需初始化,空间是随用随开的,长度也是可变的,访问时需要从头开始通过next指针进行遍历性访问,插入删除操作简单,只需要变更指针指向。在使用场景上,列表适合需要快速访问的场景,比如一个公司的所有员工的通讯录,而链表适合需要频繁插入删除操作的场景,比如存在优先级的订单队列。
8.说一下实现map用的数据结构。
答:在python中没有map中变量类型,我想您应该是说的C++中标准库中的map,它在python中对应的是orderedDict,其实现方式是红黑树,还有一种是无序的map,在python中是dict字典的形式,实现方式是哈希表。
9.哈希表更像是一种列表还是链表。
答:哈希表是两种数据结构的组合,哈希表本身更像是一种列表,但是哈希表存在哈希冲突,而普遍用来解决哈希冲突的拉链法则是用链表的方式实现的,所以说它是两者的组合。
9.出个题,你只要说一下思路就行,现在有一篇很长的英文文章,都是空格分隔的,让你统计一下文章中单词出现的次数。
答:首先我要确定一下我这程序是运行在什么样的硬件上,因为您提到是很长的一篇文章,我要确保我将其加载到内存里是不是会超限。如果没有内存限制,我会直接把他们全读到内存里,如果有,就得考虑切分成文件后使用流式的读取方式。在确定读取方式之后,要确定大小写如何处理,如果大小写认为是同单词,那么就将读到的字符串全转为大写或者小写,如果认为不同则没有影响,然后我只需要将得到的字符串根据空格分割,然后维护一个python字典即可完成功能。
10.你的简历上介绍了你有一些项目经历,挑一个你觉得对你影响最大的讲一下。
这个回答出现了具体人和事,不做分享。
11.你计划中要从事哪个方向的研究或工作。
答:我当前的计划中是要找算法类的工作,优先的肯定是我的研究方向语音增强这个方面,其次因为深度学习很多东西都有共性,所以其次的也考虑计算机视觉,自然语言处理方向,如果前两者都不满足,可能会去后端碰碰运气。
——————————————————————————————
二面(双方在闲聊中获取信息)
1.自我介绍
主要介绍自身情况,内容包括学业,成就,爱好等,最后说一下对公司的了解,表达一下想要加入。
2.本科和研究生都是同一所学校,你是哪儿人?为什么会选择在这所学校读书?
说了一下当年择校的考量和高考的志愿填报,并委婉的表达自己不想去西北工作(广联达在西安是有研发岗的)。
3.说一说这几年你最自豪的一件事。
讲了考研,因为考研波折挺多的。主要说考研如何规划,并最后取得了很好的成绩。
4.说一说这几年你最受挫的一件事。
还是考研,因为波折很多。主要说考研前发生的事,以及如何走出低谷。
5.你的实验室有多少人?说一说其中你最敬佩的人,并说明原因。
大致介绍了一下实验室,并介绍我最敬佩的一维师兄。
6.你这几年有没有什么让你自豪的项目。
先说了研究生期间发了论文,然后转折,重点说了本科的大创项目。
7.在这个项目里你的角色是队长,你们是怎么合作的,过程中有什么问题。
介绍了项目和成员组成以及各自的职责。主要说了我负责的软件和另一位队友的硬件之间的联动和交流。
8.这个项目进行的过程中有没有出现重大分歧,如何解决的。
这个真没有,项目是大三开始的,但队友都是刚入学就志同道合的。
9.你在这几年参与了很多项目,也肯定避免不了跟其他人合作,过程中有没有你很不喜欢的人,具体描述一下。
说了曾经实习公司中里的一个员工,并表达了自己对于项目合作的一些看法。
10.说说你的三个优点。
爱钻研,心态好,执行能力强,并说了一些事例。
11.说说你的三个缺点。
固执,有些玩心,体能差,并说了一些事例。
12.反问
问了三个问题:广联达人工智能主要做什么?您在广联达几年了,可以分享一下感受么?您对我有什么意见或者建议。(其实主要有用的问题在第二个)
13.了解了一些家庭情况,并询问了工作意愿。

#广联达##实习##面经##人工智能#
全部评论
楼主,笔试完多久面试的呀,没通知的是不是就凉了
点赞 回复 分享
发布于 2021-05-29 15:59
请问笔试是三道编程题吗?有选择题吗?
点赞 回复 分享
发布于 2021-09-08 16:46
为啥我也是算法岗,笔试给了20道选择题,40道逻辑题和一道编程啊?😓😓
点赞 回复 分享
发布于 2021-09-08 20:28

相关推荐

其实无论是什么岗,实习一定是重中之重,那么怎么才能找到大厂实习呢?[语言方面]首先,大厂后端岗主要集中在java go python php这些语言中,请注意c cpp rust这几个语言属于大厂鸡架,游戏引擎,游戏客户端的招聘大岗,如果你想要去传统意义上的互联网后端,不要头铁学个cpp去冲互联网后端,大概率只会被鸡架部门等捞起来。在大厂后端青睐的java go python php这些语言中,有该如何选择呢?根据笔者三段大厂实习的经验,语言其实不重要,公司中的项目千奇百怪,什么语言的项目都有,你大概率都会接触到,笔者也是这四种语言都写过。不过作为面试而言,笔者推荐你选择从java go python这三个中选择两个双修(php不必要单独学,比较小众其实)比如java➕go  java➕python go➕python这样子。[语言八股准备]可以从以下几个方面准备对应语言八股[java]java推荐看javaguide上的八股,常会被问的有 java中的collections的底层原理 java并发相关 jvm相关 垃圾回收相关 spring的相关八股[go]go的八股常见的有channel原理 map原理 sync.map原理 slice原理 gmp模型 go中的垃圾回收等[python]python中常见的八股有  python装饰品深拷贝浅拷贝等不过从笔者的面试经验来看,语言八股不是很重要,大厂面试官不太关注你到底什么语言,他更关注你的项目经历和你的基础知识,而且每一次面试会重点问你一个项目经历,所以准备一个好的项目至关重要。[项目经历相关]项目经历又该怎么准备呢?如果你有过实习,那么恭喜你这次面试有的讲了,讲你的实习就ok的,一般面试官再不感兴趣,也能讲个10分钟的。如果你没有实习,那么你准备一个烂大街项目也是ok的,但是你要把名字改成你在学校做的项目,并且你要对这个项目非常熟悉。[面试一般流程]笔者多次大厂面试经验来看,一面一般是15分钟项目介绍,15分钟基础知识拷打,30分钟做题这么个节奏。二面会加大项目比重,可能全程项目,或者项目➕场景设计➕少量基础知识基础知识中,语言八股一般问的少,更多的还是问mysql redis 消息队列 操作系统 网络相关的基础知识。[基础知识相关]mysql中,笔者最常被问到的有 索引相关 锁相关 事务相关 日志相关redis中,笔者最常被问的是 redis常见数据结构 redis持久化相关 缓存击穿 缓存穿透 缓存雪崩消息队列中,你从kafka rocketmq rabbitmq等挑一个你喜欢的,把他的原理看看即可网络中最常问http和https区别https中ssl加密过程tcp相关操作系统最常问死锁进程线程区别有的面试难的话可能问你epoll的一些东西[场景设计]场景设计一般没有固定答案,但是笔者的经验来看,可以从下面这几个方面来设计:1.数据库方面:考虑索引优化,分库分表,集群部署2.缓存方面:考虑持久化,使用特定的数据结构来优化缓存存储,设计相关方案保证数据库和缓存的数据一致性3.消息队列引入,解耦高流系统4.限流算法引入,防止流量高负载一般来说,你从这四个方面和面试官扯,30分钟肯定扯下来了,面试也不需要说太细,考虑这些已经绰绰有余了。[总结]实习的过程,就是一个滚雪球的过程,如果一开始找大厂屡屡碰壁,不妨先找个中小厂,你会发现,有一段实习之后再找,会容易好多。#牛客激励计划# #牛客AI配图神器#
点赞 评论 收藏
分享
评论
3
23
分享

创作者周榜

更多
牛客网
牛客企业服务