一面:1h
2020-05-08
【考察内容】
我们主要考察通用型的业务问题和过往的项目经历
价值观和软性技能也是我们选择人才的重要因素
专业知识
- 自我介绍?
balabala - 项目介绍中的crush or debug?
没有准备过,说了一些服务器的调试;然后讲了在项目中没有遇到过crush,但在C++刷算法题中遇到过内存泄露(引入自己熟悉的C++领域) - 内存泄露的原因?
指针使用后没有释放其在内存中占用的地址 - C++11的新特性是否了解?
智能指针,它就可以很好地解决内存泄露的问题 - 智能指针都有哪些?
shared_ptr, unique_ptr, weak_ptr - 智能指针如何释放内存的?
应该是调用析构函数的 - 那智能指针是如何知道何时该释放内存的?
自己也不是很清楚,随口说是根据生命周期判断 - 那如果一个对象中有智能指针,另一个对象一直在持有该对象,则当前的智能指针一直都在生命周期内,应该如何知道何时释放内存?
我想了好久,回答是不是根据一个内部的计时器判断(面试官说:很接近了,是一个状态)
然后又根据状态的提示,想到是不是跟进程的挂起?执行?这些状态有关???
(其实面试官是想问如何实现智能指针何时释放内存,面试官说设置一个状态变量,被持有时做标记,不被持有时取消标记即可,自己一直理解的是智能指针释放内存的原理是什么) - sizeof与strlen的区别
我回答的是sizeof得到的是开辟的空间大小,strlen是获得从首地址到’\0’的长度;sizeof求数组长度需要除上基本类型所占的字节数(其实sizeof是个运算符,strlen是个函数;前者返回对象类型在内存中占的字节数,后者返回字符串长度) - 传指针和传引用的区别
指针会有一块独自的地址,引用只是变量的别名,和原始变量共用一块地址
指针大小是4字节,引用的大小和原始变量大小一致
指针可以使用多级指针,引用只能一级 - 形参只是个基础变量,会是什么情况
只是个值传递,子函数里只不过是又申请了一块地址存放变量,外面无法获取到,也不能修改外面的值 - 熟悉的进程通信的方式有哪些