本科软件工程普通学生一枚,春招之路,记录下心得

面试过程

首先一上来面试官先介绍了下自己,然后让我做个自我介绍,我像往常一下介绍了下自己的项目经验和实习经历,阐述了一下求职意向。

接着面试官从我的专业基础问起,问我在校学的最好的专业课是啥,我说是计算机网络和操作系统,然后他就问我操作系统主要讲了啥,然后我从进程管理,内存管理,文件管理和设备管理这几个方面讲了一下一些。(实际上并不准确,进程管理属于处理机调度的范畴,内存管理只是存储管理的一小块,还包括辅存的管理等等,IO管理也没有说,这一部分事后回想了一下答得不是很好)

c语言内存结构与struct内存对齐

接着他问我是否学过c语言,我说大学里学的《C++程序设计》起初讲过c一部分的基础,接着他问了我两个常见的问题,一个是静态变量,全局变量和局部变量以及malloc,new的变量如何存储,我说局部变量存储在栈中,new和malloc属于动态内存分配,他们分配的变量存储在堆中,全局和静态变量都存储在全局和静态数据区,初始化的在data段,未初始化的在bss段。(这部分也不是很准确,C语言和C++的内存结构有一点点不一样,C++中已不再区分初始化的和未初始化的全局变量和静态变量,他们都存放在同一块地方,C++中malloc分配的内存在自由存储区,和堆很类似)

第二个问题是C++的内存对齐,32位机中,一个struct,其中一个成员变量是int类型,一个是char类型,一个是short类型,问整个结构体所占用的内存大小,我说大小是8个字节,因为struct的大小是其中最宽类型大小的整数倍。(一部分正确,如果第一个成员是int类型,后面是char和short,确实是8字节没错,但如果第一个成员是char类型,第二个和第三个成员是int型和short型,则整个结构体的大小应该是12字节,因为此时char类型是第一个数据成员,放在offset为0的地方,后面每个成员相对于结构体首地址的偏移量都是某个数(#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个)的整数倍,#pragma pack(n)如果没有显示设定,缺省为8,所以这里int(4个字节)和8中较小者是4,所以int这个成员变量的摆放位置必须是4的倍数,由于第一个位置已经被char占了,所以只能放在距首地址偏移4个字节处,此时总共占8个字节,后面short紧接着8字节偏移处再放两个字节,由于最后结构体也要按照最大的成员数据类型的宽度对齐,所以最后总大小是12(4 X 3),不是10)

在VS中测试结果如下:

#include <iostream>
using namespace std;
struct a {int i;char c;short s;
};int main()
{cout << sizeof(a)<<endl;
}

输出结果:

#include <iostream>
using namespace std;
struct a {  char c;int i;short s;
};int main()
{cout << sizeof(a)<<endl;
}

输出结果

如果加上#pragma pack(n)就得比较其值和要存放的成员数据类型的大小,取其中较小者作为对齐的边界

#include <iostream>
#pragma pack(2)
using namespace std;
struct a {  char c;int i;short s;
};int main()
{cout << sizeof(a)<<endl;
}

以2为对界,int存放在第二个字节偏移处
输出结果

以1为对界

#include <iostream>
#pragma pack(1)
using namespace std;
struct a {  char c;int i;short s;
};int main()
{cout << sizeof(a)<<endl;
}

输出结果

项目经验

接着面试官让我说出一两个最能体现我软件编程功底的一个项目,当时愣了一跳,一个普通的应届毕业生,着实谈不上什么功底,就选了我和同学一起开发的一个移动会议App(算个半成品)。给他讲了用的MVP架构,以及对一些基类的封装,面向接口编程的一些细节,通过封装基类,让类与类之间的耦合发生在高层,而不是底层具体的实现类(实际上这些道理也是我看视频,看书学的)。然后就着重讲了一下,Netty写服务端和自己用protocol buffer 编解码的内容。然后他问我从项目中学到了什么,我就说,学会了如何去封装一些基类,如何去对软件解耦合;学到了JAVA的NIO框架,Netty 这种非阻塞式IO的优势(当时看过一些视频解析它的源码)(对一些自己用到过的框架,分析他的源码和底层实现有利于提高我们的技术深度和工程素养),同时学到了Google的protocol buffer这个序列化协议相对于XML,Json这些传统的数据存储传输方法的独特优势。

接着他继续看我的简历,看到我项目中有使用过OpenGL ES和OpenCV,就问我OpenGL的一些东西,接着又问我着色器语言,我简单的说了下着色器语言的语法,比如什么Uniform变量啊,vary变量啊,但是顶点着色器和片元着色器以及着色器程序这些重点忘说了,感觉有点不应该

接下来讨论了一些兴趣爱好和未来的规划啥的,最后到我的提问环节,我问了一些他们业务相关的问题然后这次面试就结束了。

总结

总结一下,整体的感觉很好,面试官人还不错,但是自己确实有好几个问题本来能答得更好的没有回答好,不是忘了一些,就是没有考虑清楚面试官的问题,希望后面能够做的更好。

OPPO2019春季校园招聘C/C++开发(手机方向)面试总结相关推荐

  1. 【c++】牛客网 vivo2020届春季校园招聘在线编程考试题 手机锁屏的有效模式

    题目参考: 牛客网 vivo2020届春季校园招聘在线编程考试题 一根烟,一壶酒,一道算法编一宿... 这是个明显的图结构,九个结点,任意两个节点间相连,我们可以求出图的所有所有满足如下要求的有序路径 ...

  2. 笔试 | 东方财富 2020 春季校园招聘后端开发在线笔试【Python】【C++】【字符串】【动态规划】

    东方财富 2020 春季校园招聘后端开发在线笔试[Python][C++][字符串][动态规划] 一.单选题 一共有 256 个结点的二叉树高度最小是多少:8. 读程题,选出正确的程序输出结果. 不记 ...

  3. vivo2020届春季校园招聘手机屏幕解锁模式

    vivo2020届春季校园招聘在线编程考试 [编程题]手机屏幕解锁模式 用Java解题,算出所有可能性包括无效的模式,如285是无效的,而528是有效的. vivo2020届春季校园招聘在线编程考试 ...

  4. Hulu 2022春季校园招聘来啦

    2022春季校园招聘来了! @2021&2022届毕业生 01 招聘职位 软件开发工程师 (后端) 软件开发工程师(前端) 算法工程师(机器学习方向) 02 招聘对象 2021&202 ...

  5. vivo2020届春季校园招聘在线编程考试 解题报告 Apare_xzc

    vivo2020届春季校园招聘在线编程考试 解题报告 题目链接:牛客链接 A. 手机屏幕解锁模式 分析: 这是一个智能手机的图案锁,有3*3=9个点.现在要求所有图案中经过的点的个数再[m,n]这个范 ...

  6. 牛客网vivo2020届春季校园招聘在线编程考试

    来源:牛客网vivo2020届春季校园招聘在线编程考试 https://www.nowcoder.com/question/next?pid=22390442&qid=925105&t ...

  7. vivo2020届春季校园招聘在线编程考试--[编程题]vivo智能手机产能

    vivo2020届春季校园招聘在线编程考试--[编程题]vivo智能手机产能 题目 解题思路 代码块 题目 在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升. 假 ...

  8. 2021多益网络春季校园招聘游戏研发笔试题(回忆版)

    2021多益网络春季校园招聘游戏研发笔试题 笔试题分为15道单选题,填空题,简答题,1道编程题 1单选题 就几乎是数据结构,计算机网络的题目,期末考试那种程度的选择题 2填空题 (1)求时间复杂度 ( ...

  9. 江苏农村商业银行计算机类笔试考什么时候,2020江苏农商行春季校园招聘笔试考什么?...

    江苏中公教育整理了农商银行考试都考什么的相关问题,包括农商银行考试考什么内容.农商银行考试考什么科目.农商银行考试都考哪些内容等,帮助考生深入了解农商银行考试内容.更多2020江苏农商行春季校园招聘考 ...

最新文章

  1. 面向对象的程序设计——理解对象
  2. java通过反射获取类名、属性名称以及@Table注解上的表名称
  3. mysql行列转换_Excel、SQL、Python分别实现行列转换
  4. 30天敏捷结果(19):你在为谁做事?
  5. ODS:输出多样化采样,有效增强白盒和黑盒攻击的性能 | NeurIPS 2020
  6. navicate 导出批量插入语句
  7. CodeForces 213 E
  8. 2016年学习Linux决心书(老男孩教育在线课程班第二期)
  9. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
  10. java 内存机制(堆和栈),内存地址
  11. C# 同一应用程序域不同线程之间的参数传递方式
  12. 计算机网络第七版课后习题答案(第一章)(20210321)
  13. allshare cast安卓版下载_PanDownload 安卓手机版,解决百度网盘下载速度慢
  14. 计算机的来源知识,计算机的由来计算机从诞生到现在才不过50多年的时间,可是发展却很快,已先后经历了四代,可以说是人丁兴旺。世界上第一台电子计算机1946年诞生于美国,名为埃尼阿克(ENIAC)...
  15. java后台实现支付宝支付接口、支付宝订单查询接口 前端为APP
  16. C语言程序设计(2018-2019学年第一学期测试卷)
  17. 解决SQLyog连接MySQL数据库时报2058错误
  18. 初识OpenGL (-)纹理过滤(Texture Filtering)
  19. ps命令查看进程详解
  20. Memcached的LRU策略

热门文章

  1. 读宣化上人所讲金刚经有感
  2. 京东Java开发一面面经
  3. 将蓝牙鼠标或触控板连接到 iPad
  4. 还是分不清JavaScript中冒泡排序与插入排序区别的看过来!!!
  5. 【报告分享】2021年中国生鲜电商行业研究报告-艾瑞咨询(附下载)
  6. Web前端从入门到入土
  7. GPU加速MG整车设计平台汽车碰撞测试高性能计算
  8. 使用loopviewpager打造banner图轮播,带圆点
  9. JFreechart综合
  10. 2021015979李庚奇实验八