【2022-09-15】小米软开两轮面经
基本信息
岗位:软开c/c++
Base:深圳
一面(9月5日 45min)
- 面试官介绍部门(安卓)
- 自我介绍
- 成绩
- 算法题:链表内部指定区间反转
- c++虚函数表了解吗,创建时机是什么时候
- 怎么查找虚函数表中的函数,虚函数指针存放的位置在哪里
- 智能指针,shared_ptr和unique_ptr怎么实现的,什么场景需要智能指针
- 内存泄漏了解吗
面试官姐姐声音很好听
- stl的map和unordered_map
- std::move
- 讲一下程序栈空间
- 线程间同步怎么做的,信号量怎么使用
- 死锁产生的条件
- gdb用过吗,怎么调试core文件,查看变量类型的命令是什么
- gdb在线调试用过吗
- 汇编语言了解吗,用GDB看过反汇编吗
二面(9月15日 3h24min)
强度略高,几乎每个问题都以这个不是很清楚结尾,凭记忆写的,后面想起来更多的再补充
- 自我介绍
- 算法题:写题二叉树的序列化与反序列化
序列化的返回为char*,不是string(开始的写法是在序列化函数里面用string,返回const_cast<char*>(string.c_str()),一直报错,然后malloc了个char[]数组,终于过了)
- 为什么不能返回const_cast<char*>(string.c_str())呢?
局部变量的指针,string析构了,这里说到了string类长度以16字节为界,存储方式不一样,给后面留了个大坑
- 如果是string接收返回值可以直接返回吗,为什么?
可以,拷贝构造
- 如果一个函数string f(), const char* ret = f().c_str(), printf(“%s”, ret)能输出吗?为什么?
不能,临时变量析构了
- 如果是printf(“%s”, f().c_str())呢?(可以)
- 你刚刚说到了string类对于长短字符串存储方式不一样,那你要怎么设计这个数据结构?应该有哪些成员变量?
要求空间要极致压缩,要求只用16个字节,实现短字符串存在栈上,长字符串在堆上,并且栈上有一个指针指向长字符串,这里聊了非常久,答案是要用共用体
- 怎么设计一个迭代器?需要考虑哪些东西?
重载+,-运算符,自定义指针移动规则,定义起始与结束标志位,定义迭代器失效的规则
- c++的智能指针是怎么实现的?
shared_ptr引用计数,unique_ptr禁用拷贝构造和禁止重载赋值运算符
shared_ptr怎么保证线程安全?(本身不能保证,要加锁)还有其他方式吗?(c++提供了atomic库支持一些原子的操作,但是没用过)
锁在操作系统怎么实现的?
内核标志位,硬件指令保证原子性,比如tsl
什么情况下会产生死锁?(四个条件)
怎么避免死锁呢?(让我讲银行家算法,乱讲一通)
linux系统是靠什么来管理进程的?(pcb, 即代码实现中的task_struct)
那进程怎么通过task_struct来找到虚拟内存的呢?
task_struct中有个mm_struct结构体就是专门来描述进程的地址空间的
- 内核线程和用户线程有什么区别?(这里回答偏了,说成了内核态线程和协程)
- 系统启动的1号进程是什么?(init进程)那2号呢?(不知道,答案好像就是内核线程)
- 内核栈和用户栈有什么区别?分别存的是什么?(用户栈是函数栈帧,内核栈没说清楚)
- 系统调用的是什么?系统调用函数的栈帧存在哪儿的?(用户栈)
- 系统调用的中断现场保存在哪儿?
答案就是内核栈,但是答错了,说应该有tcb
- 内核线程和用户线程怎么区分的(task_struct中有flag,猜对了)
- 内核current了解吗(真不知道,投降)
- 进程怎么通过task_struct中的信息访址的?
mm_struct中有PGD指针,然后四级页表
- 四级页表里面分别是什么?页表条目只有地址吗?
还有一些标志位,比如标记为脏页
- TLB命中和未命中会怎么样?
- 你觉得刚刚讲的里面会有发生什么异常吗?(page fault, 会发生换入换出)
- 有哪些换入换出算法呢?怎么进行的?(LRU, 如果页表使用过需要刷脏)
- 操作系统是怎么管理内存的呢?比如malloc是怎么申请的?
brk和mmap,除了暴露给程序员的可用空间的起始地址之外,还有个header来记录快大小和是否被分配
- 什么时候会发生segmentation fault, 数组越界一定会发生吗?
不一定,要访问到非法的地址才会,这里又扯了很久
- mmap的单位是多少(4KB)
- 知道哪些allocator?(TCmalloc)
- 知道哪些磁盘调度算法?(不知道,其实磁盘io那部分压根没看)
- 对安卓了解多少?
写过安卓应用,Activity, Listener, MsgHandler
- 在校成绩怎么样,觉得自己想做哪方面的工作?
- 学校什么时候开三方?
- 手里面有哪些offer?
此时已经不想面了,估计也不想要我,后面随心所欲不逾矩了
- 为什么没有去华为呢?(投了,还没结果)
- 想过去嵌入式或者车企之类的吗?
- 觉得小米怎么样?
没用过小米手机,觉得小米的平衡车踩着很方便,面试官一声叹息
- 反问什么时候有个结果
说今年每个组仅有个位hc所以会排序,就是捞不到我吧…
【2022-09-15】小米软开两轮面经相关推荐
- 2022/08/15 吉软 MySQL数据库(1)
目录 一.数据库: 二.SQL 2.1.SQL的优点 2.2.SQL的分类 2.2.1.DCL(数据控制语言) 2.2.2.DDL(数据定义语言) 2.2.3.DML(数据操作语言) 三.MySQL: ...
- 两轮电动车被小米、哈啰们盯上了
随着物联网等技术的进步,传统两轮电动车开始加速向智能两轮电动车转变.而消费主力年轻化趋势的不断深入,也催生了两轮电动车的智能化需求,智能化逐渐成为两轮电动车企业寻求差异化的核心关键. 两轮电动车的玩家 ...
- CSP-J1 CSP-S2第1轮 初赛资料集(2022.09.09)
1.CSP-J CSP-S NOI初赛 https://blog.csdn.net/dllglvzhenfeng/category_11823100.html 2.CCF关于举办CSP-J1 CSP- ...
- 2022电动两轮市场格局分化,九号异军突起
近期电动两轮车行业各家年报发布以后,电动两轮车新一轮的行业态势已然显现. 头部部分:雅迪爱玛差距拉大,新日掉队 爱玛雅迪差距又拉大了.2021年,雅迪收入近270亿元.双方差距从2020年的63亿元, ...
- java面试分为_【中软国际Java面试】面试分为两轮。-看准网
面试分为两轮. 面试分为两轮.一面技术面,看了往年的面经,感觉真的好水,不过我面试的时候感觉还是有点难度的,范围很广.数据结构和算法问了8大排序,问了有哪些数据结构,快排的思想,基准怎么找,二分法查找 ...
- 科技“蝶变”,两轮电动车下一个五年的“新动力”
文|螳螂观察 作者|陈先森 1989年,清华大学研发团队成功制造第一台电动自动车原理样机,开启了国内电动自行车6年的技术改进和推广之路.其中,清华大学马贵龙教授带队研制出后轮采用轮毂电机的电动自行车, ...
- 要强的董经贵,与跳不出两轮电动车品质“陷阱”的雅迪
文|智能相对论 作者|陈明涛 "雅迪缺乏一个明确的战略定位,整个企业都没有方向,直接导致雅迪在前期竞争中失去先机." "行业主要竞争对手更擅长销售和价格战,雅迪一直疲于应 ...
- 只靠石墨烯电池,撑不起两轮电动车的“高端梦”
文|智能相对论 作者|陈明涛 在两轮电动车上,"石墨烯"电池已经成为品牌标配. 雅迪.爱玛.台铃等都有搭载石墨烯电池的车型,雅迪的TTFAR石墨烯电池已经迭代到第4代,而第3代Pl ...
- 请画图说明tcp/ip协议栈_5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南 - Android木子李老师...
大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助. 最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯,挂了- 所以 ...
最新文章
- [转载红鱼儿]kbmmw 开发点滴:ErrorTable用法
- Codeforces Round #406 (Div. 1) B. Legacy(线段树上优化建图)
- eselasticsearch入门_ElasticSearch入门 附.Net Core例子
- JMeter中的HTTPS套接字错误
- Mybatis核心配置文件SqlMapConfig.xml独立使用配置内容
- javafx2_JavaFX 2 GameTutorial第3部分
- wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏
- 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性
- springboot之数据校验及多环境切换
- 物联网已死,API 万岁!
- BI在企业数字化转型中的价值
- Would It affect RAC clusterware and database If we adjust OS time/Clock?
- 微软开源项目NeuronBlocks:像搭积木一样构建自然语言理解深度学习模型
- 禁止微信中长按出现 复制文本和在浏览器中打开
- html字数统计,html页面字数统计
- 微软也招 Java!
- 06-13最新Xcode7 beta版迅雷离线下载
- C++Qt开发——Linguist语言家
- 系统分析与设计小组项目总结报告
- CyanogenMod - All the source code for CyanogenMod
热门文章
- KVM virsh命令
- 高级office计算机考试,计算机高级OFFICE考试参考.pdf
- 【正点原子STM32连载】 第二十六章 USMART调试组件实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- ICLR 2023 | 首个3D人像视频生成模型!仅需1张2D人像,眨眼、口型都能改变
- 微信小程序多行文本超出显示省略号
- 删除数据库表中重复数据
- 并发编程三大特性——原子性
- iOS开发----cocoapods的那些事儿
- 运用用setAttribute和getAttribute
- 使用Python代码获取网站反应时间的实战代码