鹅厂2021春招iOS客户端一面新鲜回忆录
(⑉・̆-・̆⑉)
2020.04.27 01:40:23 更新
刚刚点开校招动态看到了:“很遗憾,本次流程已结束,期待新流程中再相遇。” 🥶🥶🥶
真就凉经了 🤐🤐🤐
准备(基本是零准备)
《和平精英》 SS13赛季成功更新,因此不学无术的我开始了新赛季的战神之路(不是),然鹅今天的两轮面试真的是折磨死人,上午9点半的鹅厂,下午4点的虾厂,中间还要去打新冠疫苗第二针。
出于对掐鸡的热爱我投了光子的后端,但是面试时间不合适,于是被光子毙了,随后QQ的iOS客户端光速捞了我,然而此时的我基本上只回顾了不到10道算法题(能够背下来那种),加上重新速成的 计算机网络 ,操作系统 ,数据库 的一些基础知识(有用!)。
面试内容为 编程 * 1 + 项目介绍 + 问答若干
编程
""" 就一道题,反转链表 """class ListNode(): def __init__(self, value): self.value = value self.next = None def reverseList(listNode): return reverseList(listNode.next) + [listNode.value] if listNode else [] #数组递归 head = ListNode(0) p1 = ListNode(1) p2 = ListNode(2) p3 = ListNode(3) p4 = ListNode(4) head.next = p1 p1.next = p2 p2.next = p3 p3.next = p4 print(f"原始链表为:[{head.value}, {p1.value}, {p2.value}, {p3.value}, {p4.value}]") print("反转链表为:", end="") print(reverseList(head))# 输出结果如下 原始链表为:[0, 1, 2, 3, 4] 反转链表为:[4, 3, 2, 1, 0]随后面试官又让我原地反转链表,于是:
def reverseList2(listNode): if listNode == None or listNode.next == None: return listNode pre = None next = None while listNode != None: next = listNode.next listNode.next = pre pre = listNode listNode = next return pre def printList(a): b = a while b: print(b.value, end=", ") b = b.next printList(reverseList2(head)) print("]")# 输出结果如下 原始链表为:[0, 1, 2, 3, 4] 反转链表为:[4, 3, 2, 1, 0, ] # 虽然多了个逗号但是也无关紧要了
项目介绍
- 详细介绍自己简历中比较突出的几个项目,占用了70%左右的时间(一段实验室算法实习+一段开源项目的前端工作)
问答
# 按题号顺序
- 500个数组,每个数组200个从小到大排好序的数,找到这500个数组中最小的500个数
- 合并数组,快排,时间复杂度O(n·logn)
- 建堆(结束后查的,当时不会)
- TCP协议为什么比UDP协议可靠,如何保证可靠传输,传输过程中某些比特位改变了会怎么样(没有考握手挥手,考的点比较细,我不太会)
- 虚拟内存的作用,如果物理内存够大还需要虚拟内存吗