基本信息

岗位:软开c/c++
Base:深圳

一面(9月5日 45min)

  1. 面试官介绍部门(安卓)
  2. 自我介绍
  3. 成绩
  4. 算法题:链表内部指定区间反转
  5. c++虚函数表了解吗,创建时机是什么时候
  6. 怎么查找虚函数表中的函数,虚函数指针存放的位置在哪里
  7. 智能指针,shared_ptr和unique_ptr怎么实现的,什么场景需要智能指针
  8. 内存泄漏了解吗

面试官姐姐声音很好听

  1. stl的map和unordered_map
  2. std::move
  3. 讲一下程序栈空间
  4. 线程间同步怎么做的,信号量怎么使用
  5. 死锁产生的条件
  6. gdb用过吗,怎么调试core文件,查看变量类型的命令是什么
  7. gdb在线调试用过吗
  8. 汇编语言了解吗,用GDB看过反汇编吗

二面(9月15日 3h24min)

强度略高,几乎每个问题都以这个不是很清楚结尾,凭记忆写的,后面想起来更多的再补充

  1. 自我介绍
  2. 算法题:写题二叉树的序列化与反序列化

序列化的返回为char*,不是string(开始的写法是在序列化函数里面用string,返回const_cast<char*>(string.c_str()),一直报错,然后malloc了个char[]数组,终于过了)

  1. 为什么不能返回const_cast<char*>(string.c_str())呢?

局部变量的指针,string析构了,这里说到了string类长度以16字节为界,存储方式不一样,给后面留了个大坑

  1. 如果是string接收返回值可以直接返回吗,为什么?

可以,拷贝构造

  1. 如果一个函数string f(), const char* ret = f().c_str(), printf(“%s”, ret)能输出吗?为什么?

不能,临时变量析构了

  1. 如果是printf(“%s”, f().c_str())呢?(可以)
  2. 你刚刚说到了string类对于长短字符串存储方式不一样,那你要怎么设计这个数据结构?应该有哪些成员变量?

要求空间要极致压缩,要求只用16个字节,实现短字符串存在栈上,长字符串在堆上,并且栈上有一个指针指向长字符串,这里聊了非常久,答案是要用共用体

  1. 怎么设计一个迭代器?需要考虑哪些东西?

重载+,-运算符,自定义指针移动规则,定义起始与结束标志位,定义迭代器失效的规则

  1. c++的智能指针是怎么实现的?

shared_ptr引用计数,unique_ptr禁用拷贝构造和禁止重载赋值运算符

  1. shared_ptr怎么保证线程安全?(本身不能保证,要加锁)还有其他方式吗?(c++提供了atomic库支持一些原子的操作,但是没用过)

  2. 锁在操作系统怎么实现的?

内核标志位,硬件指令保证原子性,比如tsl

  1. 什么情况下会产生死锁?(四个条件)

  2. 怎么避免死锁呢?(让我讲银行家算法,乱讲一通)

  3. linux系统是靠什么来管理进程的?(pcb, 即代码实现中的task_struct)

  4. 那进程怎么通过task_struct来找到虚拟内存的呢?

task_struct中有个mm_struct结构体就是专门来描述进程的地址空间的

  1. 内核线程和用户线程有什么区别?(这里回答偏了,说成了内核态线程和协程)
  2. 系统启动的1号进程是什么?(init进程)那2号呢?(不知道,答案好像就是内核线程)
  3. 内核栈和用户栈有什么区别?分别存的是什么?(用户栈是函数栈帧,内核栈没说清楚)
  4. 系统调用的是什么?系统调用函数的栈帧存在哪儿的?(用户栈)
  5. 系统调用的中断现场保存在哪儿?

答案就是内核栈,但是答错了,说应该有tcb

  1. 内核线程和用户线程怎么区分的(task_struct中有flag,猜对了)
  2. 内核current了解吗(真不知道,投降)
  3. 进程怎么通过task_struct中的信息访址的?

mm_struct中有PGD指针,然后四级页表

  1. 四级页表里面分别是什么?页表条目只有地址吗?

还有一些标志位,比如标记为脏页

  1. TLB命中和未命中会怎么样?
  2. 你觉得刚刚讲的里面会有发生什么异常吗?(page fault, 会发生换入换出)
  3. 有哪些换入换出算法呢?怎么进行的?(LRU, 如果页表使用过需要刷脏)
  4. 操作系统是怎么管理内存的呢?比如malloc是怎么申请的?

brk和mmap,除了暴露给程序员的可用空间的起始地址之外,还有个header来记录快大小和是否被分配

  1. 什么时候会发生segmentation fault, 数组越界一定会发生吗?

不一定,要访问到非法的地址才会,这里又扯了很久

  1. mmap的单位是多少(4KB)
  2. 知道哪些allocator?(TCmalloc)
  3. 知道哪些磁盘调度算法?(不知道,其实磁盘io那部分压根没看)
  4. 对安卓了解多少?

写过安卓应用,Activity, Listener, MsgHandler

  1. 在校成绩怎么样,觉得自己想做哪方面的工作?
  2. 学校什么时候开三方?
  3. 手里面有哪些offer?

此时已经不想面了,估计也不想要我,后面随心所欲不逾矩了

  1. 为什么没有去华为呢?(投了,还没结果)
  2. 想过去嵌入式或者车企之类的吗?
  3. 觉得小米怎么样?

没用过小米手机,觉得小米的平衡车踩着很方便,面试官一声叹息

  1. 反问什么时候有个结果

说今年每个组仅有个位hc所以会排序,就是捞不到我吧…

【2022-09-15】小米软开两轮面经相关推荐

  1. 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: ...

  2. 两轮电动车被小米、哈啰们盯上了

    随着物联网等技术的进步,传统两轮电动车开始加速向智能两轮电动车转变.而消费主力年轻化趋势的不断深入,也催生了两轮电动车的智能化需求,智能化逐渐成为两轮电动车企业寻求差异化的核心关键. 两轮电动车的玩家 ...

  3. 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- ...

  4. 2022电动两轮市场格局分化,九号异军突起

    近期电动两轮车行业各家年报发布以后,电动两轮车新一轮的行业态势已然显现. 头部部分:雅迪爱玛差距拉大,新日掉队 爱玛雅迪差距又拉大了.2021年,雅迪收入近270亿元.双方差距从2020年的63亿元, ...

  5. java面试分为_【中软国际Java面试】面试分为两轮。-看准网

    面试分为两轮. 面试分为两轮.一面技术面,看了往年的面经,感觉真的好水,不过我面试的时候感觉还是有点难度的,范围很广.数据结构和算法问了8大排序,问了有哪些数据结构,快排的思想,基准怎么找,二分法查找 ...

  6. 科技“蝶变”,两轮电动车下一个五年的“新动力”

    文|螳螂观察 作者|陈先森 1989年,清华大学研发团队成功制造第一台电动自动车原理样机,开启了国内电动自行车6年的技术改进和推广之路.其中,清华大学马贵龙教授带队研制出后轮采用轮毂电机的电动自行车, ...

  7. 要强的董经贵,与跳不出两轮电动车品质“陷阱”的雅迪

    文|智能相对论 作者|陈明涛 "雅迪缺乏一个明确的战略定位,整个企业都没有方向,直接导致雅迪在前期竞争中失去先机." "行业主要竞争对手更擅长销售和价格战,雅迪一直疲于应 ...

  8. 只靠石墨烯电池,撑不起两轮电动车的“高端梦”

    文|智能相对论 作者|陈明涛 在两轮电动车上,"石墨烯"电池已经成为品牌标配. 雅迪.爱玛.台铃等都有搭载石墨烯电池的车型,雅迪的TTFAR石墨烯电池已经迭代到第4代,而第3代Pl ...

  9. 请画图说明tcp/ip协议栈_5年Android程序员面试字节跳动两轮后被完虐,请查收给你的面试指南 - Android木子李老师...

    大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助. 最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯,挂了- 所以 ...

最新文章

  1. [转载红鱼儿]kbmmw 开发点滴:ErrorTable用法
  2. Codeforces Round #406 (Div. 1) B. Legacy(线段树上优化建图)
  3. eselasticsearch入门_ElasticSearch入门 附.Net Core例子
  4. JMeter中的HTTPS套接字错误
  5. Mybatis核心配置文件SqlMapConfig.xml独立使用配置内容
  6. javafx2_JavaFX 2 GameTutorial第3部分
  7. wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏
  8. 修改数据表部分字段方法封装-及-动态生成对象并动态添加属性
  9. springboot之数据校验及多环境切换
  10. 物联网已死,API 万岁!
  11. BI在企业数字化转型中的价值
  12. Would It affect RAC clusterware and database If we adjust OS time/Clock?
  13. 微软开源项目NeuronBlocks:像搭积木一样构建自然语言理解深度学习模型
  14. 禁止微信中长按出现 复制文本和在浏览器中打开
  15. html字数统计,html页面字数统计
  16. 微软也招 Java!
  17. 06-13最新Xcode7 beta版迅雷离线下载
  18. C++Qt开发——Linguist语言家
  19. 系统分析与设计小组项目总结报告
  20. CyanogenMod - All the source code for CyanogenMod

热门文章

  1. KVM virsh命令
  2. 高级office计算机考试,计算机高级OFFICE考试参考.pdf
  3. 【正点原子STM32连载】 第二十六章 USMART调试组件实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  4. ICLR 2023 | 首个3D人像视频生成模型!仅需1张2D人像,眨眼、口型都能改变
  5. 微信小程序多行文本超出显示省略号
  6. 删除数据库表中重复数据
  7. 并发编程三大特性——原子性
  8. iOS开发----cocoapods的那些事儿
  9. 运用用setAttribute和getAttribute
  10. 使用Python代码获取网站反应时间的实战代码