快手客户端面经,已意向书
9.2号拿到快手客户端的意向书。简单记录一下快手的面试过程吧。
7.27号投递了c++后端,8.5号约的一面,主要问了一些基础知识:虚函数原理,父类有10个对象,子类20个对象问有多少个虚函数表,多重继承子类指针指向不同父类的问题,unique_ptr和shared_ptr,想要将一个unique_ptr赋给另一个unique_ptr该怎么做,多线程如何使用智能指针。问会哪些多线程同步的方法,说到了生产者消费者问题遇到的条件变量互斥量这些。
然后是一个编程题:有一个整数数组,里面有正有负,从第一个元素开始遍历,每次碰到一个正数就往数组的尾部跳对应个数,碰到负数就往数组头部跳对应个数。问是否能跳出这个数组。比如数组[1, 2, 0, 2, -5, -1]就可以跳出去。最开始没有太好的思路,面试官提示了一下考虑什么情况下能跳出什么情况下不能跳出,然后就自己写出来了,测试也通过了,后来问了面试官评价,面试官说基础还可以,编程的逻辑性不强。面完之后我以为差不多可以过,结果第二天就流程终止了,可能还是因为编程题上面试官给了提示才做出来。
挂了之后有点不甘心,听说快手客户端可以0基础就又投了快手客户端的岗位。8.22号一天完成了一二三面。
一面:Tcp三次握手和四次挥手,为什么需要第三次握手,等待2msl时间的意义,数据库的事务和隔离性介绍,两台机器之间在网上交流信息设计什么协议。介绍linux常用指令,linux查找名为java进程的信息用什么命令?死锁产生的条件以及如何避免,操作系统的进程和线程的区别。
编程题:判断链表是否有环,找环的位置以及环的长度。判断二叉树是否是平衡的,用递归方法和后序遍历写。一面整体来说比较基础。
二面:C++内存管理,堆和栈的区别,stl中如何管理堆,map的使用场景,如何写进程和线程,开启一个线程的函数和调用的参数,如何结束一个线程。
编程题:奇数偶数组成的数组变换成奇数在前,偶数在后。写的有一点问题,没有判断数组越界。下次切记这个问题!第二题打印菱形* 给一个行数,输出打印结果,没问题。
三面:聊项目,因为我的项目涉及到电脑与机器人的通信,面试官就问了电脑如何和机器人通信的,用的哪层协议。基础知识问了c++的开闭原则,多态的实现原理,然后问了我设计模式相关的问题。我说只知道单例模式,简单介绍了一下单例。然后让我写一个类,动物园的管理,面试官主要是想看看我对面向对象的理解。我设计了抽象类----animal类,然后写了tiger子类和sheep子类。公有继承,虚函数这些写了一下,就结束了,这一面比较快大约40分钟吧。
四面hr面:微信语音交流的,为什么想投客户端,想做ios还是安卓,她说二三面面试官都是做ios的,想让我做ios。对公司的选择考虑哪些因素。之后的一个规划是怎样的,分了毕业前的规划和未来工作的规划说的。目前有哪些offer,有没有倾向性的选择。目前还有哪些在面的公司。聊了聊项目,解决了什么问题有什么难点。大约30 分钟,比较轻松,hr小姐姐一直笑呵呵的。
最后再求个pdd,贝壳和美团的offer。
#面经##快手##C++工程师##校招#