oppo底层软件专业面凉经

OPPO 底层软件凉经:
1.  i++ 和 ++i的区别;
2. 了解哪些数据结构
3. 数组和链表区别
4. 什么时候用数组什么时候用链表
5. 经常要进行增删改查的数据用什么存储
6. 如何理解操作系统
7. 什么是进程什么是线程
8. 两个线程 操作一个变量,100次会如何,10000次会如何
9. 拷打项目:
    9.1 : 为什么用RTOS,意义在哪里,为什么能加快效率
    9.2 : 为什么加锁
    9.3 : 最大的困难如何解决
部门: 手机Linux内核
#oppo暑期实习#
全部评论
和我问的一模一样,应该是同一个人
点赞 回复 分享
发布于 03-28 19:54 广东
我投递了还在复筛😂😂
点赞 回复 分享
发布于 03-29 08:28 辽宁
周五晚上面的 全程拷打项目面试官还不是这个部门的
点赞 回复 分享
发布于 03-29 23:49 陕西
老哥你投了后多久进面的
点赞 回复 分享
发布于 04-02 13:47 上海

相关推荐

你好,又是我,不过这次我应该不是最早面的。我是双偏上9,本科不是计算机,研究生学计算机,对操作系统和嵌入式比较感兴趣。周一收到的VIVO面试邮件,约的四点钟,面试半个小时(实际上只面了二十分钟,害怕)。有两个项目,一个是嵌入式的SEG氢气检测项目,另一个是手搓操作系统的项目。四点钟进会议,面试官迟了大概两分钟的样子,然后直接让我介绍自己。我简单介绍了一下我的SEG和操作系统,于是他就问了一些问题。1.(我手搓的)操作系统是单处理器还是多处理器,我说是单处理器,因为更多的是要实现一些功能。2.问我懂不懂线程,比如线程间通信,或者互斥之类的。我就聊到了锁,互斥锁Mutex,自旋锁Spinlock,读写锁rw,RCU锁,并每个都说明了一下作用。3.问我自旋锁使用的优势(我理解错他想表达的意思了),我说在用户态可以使用。他和我详细的讲了自旋锁应该是个什么样的使用流程,内核态也可以使用自选锁。4.然后是聊到我项目里遇到的一些问题,我还是回答的是debug,我自己使用print和删除重编译的方法,以及我不会用的gdb方法。他说实际上正式开发很少用,一个是很多开发是多线程,逐步debug不现实。另一个是他们会用coredump的方法来完成,然后在模拟器上还原场景等。5.然后问我性能优化的问题,但是我自己的操作系统本身没有什么很严重的性能优化,毕竟是个简单的手搓项目。他说他们那边是做内核,主要是性能优化的。然后问我SEG有没有,我就说了delay方法避免每步都执行某一个条件(比如获取温度)。6.然后问我Linux内核的一些调度方法,说理论的就行。我就说了先入先出、短进程优先、最短时间优先等,接着就问我我自己是实现的什么,我说我实现的比较简单的rr。7.问我知不知道优先级反转,怎么解决。我说优先级反转就是低优先级拿了临界资源,中优先级抢占(这个没问题),但是此时有个高优先级进程也要临界资源,但是低优先级进程没执行完,所以表现出来就是中优先级执行->低优先级执行->高优先级执行。解决方法是优先级继承和优先级天花板。然后就问我有没有什么想问的。我问的依然是vivo对这个岗位,想要什么样的实习生,他和我说了很多,大致也就是说看能力,但不是说一进来什么都做的那种,有导师带blabla。然后说如果有后续hr会联系我。面试体感一般,主要是太像聊天了,基本没有八股也没有手撕,就是随便问问然后解答,我感觉可能会挂,唉。
查看7道真题和解析
点赞 评论 收藏
分享
3.27更新,OPPO发二面通知了,下周二————————————————————————————————————看了一圈好像没看到比我更快的,我自己也觉得快。我今天下午五点回学校的路上突然接到HR的电话,问我能不能今晚七点半面试,我想想觉得面就面吧,就接了。本人双偏上9,但是本科不是计算机的。研究生对操作系统和嵌入式都感兴趣,因此做的一个手搓操作系统的项目,一个是C51检测氢气和温度的项目。面试官看起来人还不错,说话比较好听。1.自我介绍,我稍微说了一下我的bg和爱好,他小声说了一下我本科(我本科不是计算机),问我既然本科不是计算机的,有没有学过计算机的一些基本的书籍,我说有(确实有)。2.问我对哪些语言比较熟悉,我说我C、C++都比较熟悉,实验室横向也用Python比较多。于是这里开始问C语言的基本题目:3.问我i++和++i的区别,出了一道a = i++,a的值。4.问我数组和链表的区别,我回答主要是连续内存分配上。他问我那什么时候用数组什么时候用链表,我说如果要求连续分配(比如随机访问)用数组。5.问我栈和队列的区别,我说先进后出和先进先出(这里有点乌龙,我嘴快说反了,然后纠正),接着问我用栈来实现队列,我提出的是双栈方法。6.然后问我操作系统进程和线程的区别,我说简单来说就是进程是资源分配最小单位,线程是执行调度最小单位,线程会共享进程的资源,然后也有自己的独立的栈用来保存局部变量函数调用之类的。7.问我现在有一个进程里面有一个变量a,有两个线程分别对这个a++(执行100次),最后的结果是多少。我说大概是200,因为量比较少,可能不会有很明显的竞态。如果量很大(比如10w次)且不上锁,得到的结果就小于20w。操作系统到这里结束,然后就是拷打项目。8.首先问我觉得哪个项目最能体现自己的能力,能说服他让我通过面试,我说那就问我操作系统的项目吧。但是因为问的太杂,我没回答到他的点子上。于是他换了个问题,问我这个操作系统项目最难的是什么,我说是debug,因为本身不是用户态软件可以用断点来debug,因此遇到问题就只能逐行删除编译,或者print方法。我也补充应该还有dbg方法可以用(但是我自己确实连不上)9.问我中断,问我怎么实现的中断。我说是先写stvec,把中断代码入口放进去。有中断的时候就进入这个入口,然后把重要寄存器sepc、sstatus和x0-x31之类的保存,然后调用实际的中断句柄,用scause里的值来判断是哪种中断。我以syscall为例解释了一下整个流程。10.让我解释一下我这个操作系统的定时器中断下,两个进程之间的上下文切换。我说将cpu的需要保存的信息(如sepc、sp、tx)之类的保存到自己的内核栈里面去,然后将下一个进程的内核栈中保存的这些数据还原到cpu内,这样就完成了上下文切换。11.问我怎么实现的虚拟地址到实地址的转换,我解释了一下我自己实现的riscv的rv39机制。反问:我问他OPPO这个岗位更看重的是什么?他的回答是这个岗位看中的是实习生的潜力,他们都把实习生当成一张白纸,如果有潜力,进去之后再培养。毕竟是实习生又不是社招(类似的话)。总的来说今天的面试我有点忐忑, 因为面的实在是太基础了,我以为会问我比较细节的嵌入式八股或者操作系统细节,结果C语言的问题给我把脑子干懵了。目前还是已完成面试,先放一个害怕在这,怕kpi更怕一眼觉得不行水时长#0offer互助地##投递几十家公司,到现在0offer,大家都一样吗##投递几十家公司,到现在0offer,大家都一样吗#。
DaemonChen:我昨天底软二面过了,约的周五HR面,好奇面试官是怎么耐心的听完你讲rcore的,我也是这个项目,面试官直接说rcore和xv6都是toy项目,企业里用不到,一面时无数次打断我,二面的时候我就吸取教训只说Linux下的实现了,感觉讲rcore面试官听不懂也不愿意听,只能拿来当跳板去讲Linux。
点赞 评论 收藏
分享
评论
6
19
分享

创作者周榜

更多
牛客网
牛客企业服务