快手iOS开发一面凉经
面试官态度很好,虽然迟到了15分钟但也有好好解释,很尊重人。当时他说时间有限,就直接把题目贴出来让我回答,下面就是原题,一个不少。
基础:
1、TCP和UDP的区别和使用场景;
2、iOS中属性weak底层实现原理和使用场景;
3、block的底层实现和使用注意事项;
4、随机数的计算机实现方式原理,真随机还是伪随机;
实现方式原理:
5、runtime和runloop的基本概念理解;
6、NSTimer和CADisplaylink的区别;
7、iOS的反射机制是怎么实现的;
8、对泛型的理解;
算法基础:
Q1、什么是稳定排序?时间复杂度的定义是什么?
Q2、O(n^2)算法是否一定比O(nlogn)的算法更快?
Q3、堆和优先队列有什么区别?什么是堆排序、最大堆、最小堆?
Q4、什么是二分搜索树?什么是平衡二分搜索树?常见的平衡二分搜索树有那几种?AVL树、B树、红黑树有什么区别?
算法实现:三选一
Q1、如何在不引入第三个变量的情况下,交换两个变量的值?
Q2:算法题:如何计算x^n?
Q3:算法题:给定二叉树Root以及任意两个节点p/q,问p,q的最近公共父亲节点是什么?
算法思路:二选一
Q1:数学题:给一个棍子,随机砍两刀,组成一个三角形的概率是多少?
Q2:有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?
#快手##iOS工程师##面经##校招#