腾讯移动端一面总结

这篇博客是对腾讯移动端面试经历的总结,涵盖了C语言内存管理、程序设计模式、TCP与UDP的区别、Android相关知识,如进程线程、Viper架构、数据共享、性能优化等。作者反思了自己的知识盲点,计划加强基础知识的学习。
摘要由CSDN通过智能技术生成

因为没有录音,都是面完回想起来的,整理的有点乱~~~~

1. 谈谈你学习过的架构模式 MVC MVP MVVM(对MVVM模式不太熟悉)

MVVM可以算是MVP的升级版,其中的VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体,ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力

2. 一个Union类型,共有一个int类型、Float、Double类型的字段,请问在32位的CPU创建时需要占用多少字节?

union的长度取决于其中的长度最大的那个成员变量的长度。即union中成员变量是重叠摆放的,其开始地址相同。

3. Union和Struct的区别

结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。

而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”;但优点是内存使用更为精细灵活,也节省了内存空间。

4. 谈谈你所了解的C语言的内存管理

对于一个C语言程序而言,内存空间主要由五个部分组成:代码段(.text)、数据段(.data)、静态区(.BSS)、堆和栈组成。

  • BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量和静态变量
  • 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量和静态变量的一块内存区域
  • 代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。
  • 栈区:由系统自动分配,栈区的分配运算内置于处理器的指令集,当函数执行结束时由系统自动释放。存放局部变量。栈的缺点是:容量有限,当相应的区间被释放时,局部变量不可再使用。栈是一块连续的区域,向高地址扩展,栈顶和容量是事先约定好的。
  • 堆区:在程序的执行过程中才能分配,由程序员决定,编译器在编译时无法为他们分配空间,只有在程序运行时分配,所以被称为动态分配。堆是不连续的区域ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值