新的一年又到了,各大厂也开始了春季社招。很荣幸,我成功收到了欢聚时代的面试邀请(当时很激动哈,因为前几分钟还跟我老大说,如果能有一次大厂的面试也足以在同学面前吹吹牛了)。接着就开始了我的疯狂准备。俗话说临阵磨枪,不快也光嘛。哈哈
好了,开始我的面试过程---->
1.先来个自我介绍--->介绍完后
你是用什么语言开发的,OC?Swift?还是C++? (OC)
2.那你说下OC是一门怎样的语言 (巴拉巴拉哔哔一通)
3.那你刚才说他底层是消息机制,那么什么是消息机制?(回答有说到objc_msgSend)
4.那你说下如果对一个空对象发送消息,是如何流转的?(巴拉巴拉... )
5.那什么叫运行时机制 (...)
6.说下strong,weak,assign。(哔里巴拉...说weak时,提到了block)
7.block的存储域问题(栈区比如if、for的大括号,临时性的,用完就会释放;堆区通过copy...又一顿哔哔)
8.为什么要放到堆区 (保持引用,避免用到时,在内存中找不到...)
9.说下MVC (又一顿哔哔...)
10.那你数据请求在哪里做 (C,然后又说也可以放到M里做<感觉自己萌萌哒,已经被虐傻了,极度不自信>;提到了MVVM)
11.那你怎么看MVVM(我的理解是不论是MVVM,MVCS,MVP都是从MVC中演化来的;MVVM中的MV和MVC的MVC作用相同,VM是用来做数据相关的操作的,比如网络请求...哔哩吧啦又哔哔了一顿。这时感觉这位面试官大牛已经露出失望的神色了~~)
12.一个页面,只有一个tableview的这种简单页面,要同时保证数据的正确获取,和UI界面的正确刷新(当时一问我就蒙了,想了下,应该是数据安全的问题,该加锁,我就说应该加锁,保证数据安全。然后大牛就说怎么加锁,加什么锁。
好吧,我承认我多嘴了,我就不该回答,因为我根本不知道加什么锁,我就说加互斥锁,好吧又来了,那什么叫互斥锁,我说不是很清楚...,那你说下有几种锁吧,我说不清楚...好了感觉要凉了~
走的时候,请教了大牛这个问题。大牛说再yy直播里面,主播开播,关播,cell都会增加减少。这时,用户点击这个cell<实际已经不存在了的>,这时就会造成crash)
13.你刚经常提到selector,它是具体是什么(完全懵逼,之前还记得来着。当时已经傻掉了,只能说不会,不记得了)
好了,今天就先面到这,后续如果有复试,我们再联系你,你的基础比较薄弱,请~
我的分享也到此为止了,最后等电梯的时候,大牛出来打水,遇到了,又对我说回去多看看书,我回答说我一直有看书...然后电梯来了(心里很纠结,要继续聊还是走呢。想想还是走吧,然后给了个歉意又失落的微笑,我就滚蛋了)。
最后总结下心得~
虽然过程短暂,但足够精彩。面试的过程,也是交流的过程,一个免费大牛告知你不足的机会,一个认清自我的机会。大牛很厉害很厉害,总是能找到切入点,一环扣一环,知识越问越深,逼的你也越来越紧。同时也发现自己基础不牢实,什么都有看过,但是都是一知半解,不够彻底,不够清晰,达不到理解,或者说是融会贯通的程度。一连贯的问题压过来,而且是越来越深的这种,真的应付不来。在今后的工作学习中,自己也需要更加的专注,do what you do~