职位:Android开发工程师(可接受java方向)
本来不太想接这个面试的,因为当时手里已经有百度后端研发和ThoughtWorks软开两个offer了,但约面的面试官语气很诚恳,实在不忍拒绝,就接了。
1、 数组中出现次数超过一半的数字
2、 环形链表 II
3、 螺旋矩阵
面试官话不多说,上来就甩给我三道题,要求半小时做完,结果我做了32分钟,第三题还没调试出来,担心时间不够,就先提交了,边界判定太烦,给我干懵了。
4、了解安卓开发吗?为什么选安卓开发?
因为我之前实习用QT写过桌面级的客户端,感觉客户端开发很有意思,但现在桌面级客户端开发越来越少了,所以想转到移动端。目前我对安卓开发不是很了解,但有兴趣去学。
5、堆与栈的区别?
- 堆是由程序员分配并释放的,效率比栈要低,但可用空间比栈大,比如
malloc
和new
就是在堆上申请内存空间,使用后若不释放会造成内存泄漏;- 栈是由编译器来自动分配释放的,效率高,但栈空间通常较小,比如定义一个局部变量,就是放在在栈空间中的,由于栈空间由编译器控制,所以不存在内存泄漏。
6、构造函数能否重载?
这里我傻了,我说不能重载,其实是可以重载的,最典型的就是带参数重载:
class Box {
public:
Box();
Box(int h, int w, int l):height(h), width(w), length(l){} //构造函数的重载
private:
int height, width, length;
};
7、如何理解抽象类?
类中含有纯虚函数即为抽象类。抽象类不能实例化,比如动物类下面可以有狮子、老虎、熊猫等等派生类,这些派生类是能够实例化的,但动物本身不能实例化,因为它是一个抽象的概念。
8、指针和引用的区别?
9、预编译过程做了哪些事情?
预编译主要是做了宏定义展开和引入头文件(应该还可以说一个条件编译)的工作。
10、说说归并排序?
11、TCP/IP的协议栈?
其实就是说OSI的七层模型,我从上往下说了一遍。
12、HTTP协议头部的TTL字段代表什么?
代表报文的最大跳数(最长生存时间),主要是为了防止报文段在网络中一直循环的进行传输所设置的,当达到最大跳数后该报文段会被自动丢弃。
13、git你熟悉到什么程度?
我说了常用的
pull
、add
、commit
、push
、merge
操作。
追问:知道cherry-pick
吗?
不知道。感觉
git
真是博大精深,不是特别熟悉的话简历上还是慎写,不然一问就懵。
14、闲聊在学校和实习做了什么(12min)
15、目前还有其他offer
吗?
手里现在还有个外企的
offer
,不过是做软件外包的(其实我觉得这家外企挺好的,但我故意说得不太行的样子,抬一手小米)。
追答:嗯对,外包公司确实你要慎重,因为加班严重,待遇也不是很好,毕竟做的不是自己的东西,巴拉巴拉说了一大堆。
16、能来实习吗?
不能,我现在正在实习,10月底实习完就返校了,不再实习了。
17、你对加班怎么看?
我对996深恶痛绝,这是资本家对我们的压榨,我恨加班(不能说的心里话)。
其实做这一行加班我觉得是挺正常的,自己有心理准备,实习的时候为了尽快完成自己的工作,我也常常加班。
反问:像我这种完全没有安卓开发经验的应届生能胜任这个职位吗?
面试官建议我有时间还是多学习一些相关的知识,话里话外能听出来他不太想招一个完全没有安卓开发经验的应届生。
总结
之前被字节的客户端开发给洗脑了,到处都是
客户端0基础,mentor一对一,包教包会
的内推广告,我还以为客户端都是低门槛呢,看来也不全是这样。第二天直接给了感谢信,效率挺高的。不出意外的话这可能是我秋招的最后一次面试了,现在已经完全不想刷题背八股文了。等着中秋后谈薪吧。
他给的那三道算法题,是只要求写出主要函数,还是要求 头文件,main函数,输入输出都得写?
核心模式,跟力扣一样只需要写一个函数即可。
我对996深恶痛绝,这是资本家对我们的压榨,我恨加班(不能说的心里话)。
非常正确,给你100个赞
细说百度后端研发offer😍
之前分享里已经写了😂感觉是我运气好捡漏了,也可能是边缘部门所以面试难度不太大。
数据结构的堆跟栈没有半毛钱关系吧QwQ
哈哈他这里不是说数据结构的堆和栈,而是内存的堆和栈。
啊这
orz