阿里云对象存储CPP开发暑期实习二面凉经
又没要我做自我介绍233。面了一个半小时,我已经麻了。
简历上的项目
- 项目做了哪些工作,在工作中主要承担什么样的职责
- 项目是怎样的一个性质?科研还是?
- 我看好像你是做LLVM的,能说说LLVM和GCC的区别和联系吗?(没答出来,我是菜鸡)
- 能说下LLVM的架构吗?(我好菜)
- 既然做了LLVM这个项目,有看它的源码吗?
CPP基础知识
- 指针和引用的区别?
- 指针和数组的区别( int *p 和 int arr[]的区别,没答出来)
- delete []是怎样算出回收的数组的长度的(没答出来)
- static关键字的作用?
- C++程序的编译过程?
- static关键字在C++程序编译过程的哪个阶段起作用?(这个真没看过,不过运气好猜到了是在链接阶段,之后看看材料)
- 构造函数中可以调用虚函数吗?(可以调但是一般达不到目的,一开始答对了,但后面追问结果答错了)
编程题
- leetcode 27.移除元素,双指针。本来面试官想问我怎么在vector里面移除重复元素,结果最后变成了做这个题...应该算做出来了,但过程相当漫长(我想移除数组的大小是多少,想了相当久)
- 二叉搜索树的序列化和反序列化。这题我两年前做过,但现在确实没啥印象了。姑且最后好像是用递归写出来了(主要面试官没问什么,我姑且这么相信吧,之后去验证下)。因为是用递归写的嘛,问我会不会爆栈。(那肯定会啊)然后又追问我Linux的栈大小(这个没答出来,我再去看看吧)。
其他
- 看你简历上写了解Linux,能说下你了解的部分吗?(我答了文件管理、用户管理、磁盘操作啥的)
- 能说下你了解的磁盘操作指令吗(我说了fdisk, mkfs啥的)
- 了解awk吗(没答出来)
- emacs或者vim了解吗(我答了vim的三种模式,模式之间的转换,每种模式的常见指令)
- vim怎么把文件的一部分移动到另一个位置(我答了dd + p)
- 上面的那个是按行移嘛,怎么按列移?(没答出来)
- 为什么要有设计模式?了解哪些设计模式?(我答了为了提高可维护性;了解简单工厂、工厂方法、抽象工厂、建造者、代理、外观、装饰者啥的。抱着侥幸心理希望他别问我咋写单例,结果还是写了233)
- 简单工厂、工厂方法和抽象工厂的区别与联系
- 用C++写单例模式(面经上有,但没来得及看)
反问
- 业务
- 大概多久出结果(说是1-2天,我估计是没了233)
总计
- 八股文考得不多,感觉考实际操作会考得多一点。如果考了一个点,会在这个点上深入去问。(比如static起作用的阶段,这个我没看到过)
- 多半是凉了,很多问题没答出来,还是继续努力吧。大家加油
- 面试官长得有点像罗翔老师233