No.2:武汉英泰斯特电子技术有限公司
推荐指数:★★★★
老彭拒绝理由:10k,同样低了,继续再来!
公司性质:以硬件为主,附带软件的老牌公司。
公司地址:武汉市洪山区书城路26号洪山科技创业中心A栋2楼
面试邀请来源:智联招聘
面试时间:2016-2-23 下午15:00
面试结果:10k+五险一金+macbook
面试过程:
面试官:行,来,坐,先做个自我介绍吧。
我:然后我在上面也写了,简单介绍下自己,最重要的就是熟。
面试官:我看你简历上面说的,你熟悉swift是吧?到什么程度?
我:swift是我等到swift2.0稳定了之后才开始自学的,也就最近这几个月吧。然后用swift写过几个小的项目,然后简历上面说我把项目的一些模块进行了抽取,然后我都是用swift来进行抽取的,所以swift用的还可以,但是在大项目中没用过swift。
面试官:那你说一下苹果为什么要推出swift,oc和swift怎么选择?
我:我觉得苹果要推出swift有两个很重要的点:首先,oc的专利并不是苹果独享的,所以苹果这些年也受够了iPhone专利流氓的骚扰,所以想推出一款自己有独家专利的语言来自己使用。然后第二点就是oc的语法是很怪异的,在使用其他语言的人看来,所以swift和市面上用的比较多的一些语言有更多的相似点,苹果这么做也是为了让学习其他语言的人可以更好地转到swift语言,转到iOS开发,然后swift的开源也同样的是苹果为了扩大自己在开发行业的占有率,这些都是苹果的心机啊!(这些我们上课都会有给同学们做知识补充的,我们的上课是很全面的)。
面试官点点头示意我继续。
目前市面上大多数公司用的都是oc,只有一些刚开始做app的公司会直接使用swift语言,因为有几个点:1. 如果是团队开发,如果有人不会swift那项目就会oc/swift 混编,这样代码是很难阅读的。2. 如果是比较成熟的app,就已经有一大堆成熟的代码了,也不会轻易地去重写代码或者冒险。
面试官:嗯,我们公司用的是swift,看你说的应该这块没什么问题。(第一次碰到项目全部用swift的公司,吓死宝宝了)
面试官:行,你第一家公司是xxx是吧,行,咱们来一个个app看一下。
(我也是第一次遇到这种打算所有app过一遍的,以为遇到高手了,心里有点“方”,但还是要镇定往下答)。
(还有在自我介绍的时候,我习惯性的给自己拿了一份简历放在我自己前面,怕有遗漏的地方,但是面试官立马就说了,你需要看着自己的简历才能说出来吗?我马上回答:不用的,这只是个人习惯,不好意思。然后就把简历放一边了,一定要对自己的信息熟练地说出来,不能给面试官一种照着简历读的感觉)
面试官:你第一个app是佰草集是吧?你简单介绍一下呗
(因为前面说了,不能看简历辅助记忆,所以大家也要对项目很熟悉)
我:这个项目是类似一个电商的项目,是佰草集为了推广他们品牌然后我们公司接的一个外包项目,这个是团队项目,因为我刚开始做iOS,所以并不能独自完成一个项目,所以这个项目是3人项目,我负责负责人分配给我的部分。
面试官:行,是从几月份做到几月份
我:(快速回答出产品的周期,不能犹豫)
面试官:所以你做的主要是UI还有一些模型的获取咯?
我:(表现得有点不好意思),嗯是的,后来才慢慢熟悉其他工作。
面试官:你适配了iOS6/iOS7,你主要适配那些方面的?
我:iOS6/iOS7用户最直观的一个方面就是苹果整体风格的改变,从iOS6的立体感到iOS7的扁平化,如果我们不自定tabbar和navigationbar,我们的用户就会对我们的产品有两种印象,一种是iOS6的立体印象,一种是iOS7的扁平化印象,所以我们需要形成一种同一个的风格来让用户来产生认同感。所以我这里说的适配主要是做这方面的工作。
面试官:嗯,但是我们的产品现在一般是适配iOS7以后了,所以不自定义没也问题。
面试官:你集成了支付宝是吧?说一下支付宝的流程呗?那边有白板,你可以过去画一下。
我:我边画流程图边开始讲解
(这块我们传智的iOS课程也是有详细的教学的)
首先用户的手机会通过咱们的app从咱们的服务器拿到商品数据,然后服务器返回商品的信息,然后我们通过app下单,就会连接到支付宝客户端,然后客服换通过他们的服务器来进行安全的一个支付,然后如果咱们的支付宝钱包没有余额,就会链接银行的服务器进行安全支付,如果有余额就直接在支付宝服务器进行安全支付,最重要的一个点是(换红笔):支付宝服务器会异步地给我们的后台服务器一个支付结果,这个是用户是否购买成功的凭据,所以如果这个支付结果发送失败,会不断地重新发送,直到我们的服务器确认收到支付结果。(面试官点头示意我继续)
然后在异步发送的同时会给我们的支付宝客户端一个同一个的支付结果,这个支付结果是不重要的,因为只是用于显示给用户看的,因为最终是否支付成功是按我们的异步发送的结果为准的,所以这一步就算发送失败也不会重发多次,用户可以在支付宝的账单看到支付记录。大概的流程就是这样。
面试官:嗯,说的挺好的,表达也可以。我们来下一个app吧!
面试官:你先来介绍一下这个车主服务。
我:这个用潍坊那边的广播电台想做一个就是主要是路况查询,还有一些信息分享功能的一个app,基本都是围绕路况查询来做的。
面试官:那你这个路况查询是怎么做的呢?
我:这个路况查询的功能我是用的高德地图的api(市面上地图有很多api,大家千万不要记错了),里面有提供路况的接口还有一些导航。
面试官:你这个masonry是什么东西?说一下呗(通过这点我就知道他可能不是太懂iOS了,可能是软件部的技术主管,但是不是iOS这边的,所以说的可以稍微大胆一点)
我:这个masonry是一个第三方框架,里面封装了自动布局的一些方法和属性,通过这些方法和属性我们可以更加简便地进行自动布局。但是这是我刚开始做iOS的时候用的,项目经理也说用这个。到我自己来主要负责的这个项目,为了减少对第三方框架的依赖性,我没有使用这个,而是使用VFL来进行自动布局,苹果原生的因为太麻烦了,所以会偶尔用一下,但是用的不多。
面试官:那我们就来详细地谈一下你最近的这个主要负责的项目吧。
还是那句,你先来简单介绍一下吧。
我:(简单地介绍了一下app)然后这个是一个两人项目,我是主要负责人,就负责整体UI的搭建和整体的架构和核心代码的编写。
面试官:你是负责人,那你说一下你对于团队领导的看法呗(看他问到这里,我就知道可能要找类似团队负责人那类了,后来闲聊果然是)。
我:我个人觉得,一个团队需要有一个人有决定权,我可以和你商量,但是一定我决定了,就必须按最后决定的方案来做,不能擅自更改。(这里只是稍微说一下,这方面的东西留给大家自由去发挥)
面试官:那你整体的架构是怎么架构的?
我:我总的是一个tabbar,tabbar里面的childViewController都是navigation-Controller,然后里面再根据功能进行划分区域(然后给面试官展示app),像这一块我上面就做的广告轮播器,下面就用的collectionView。
面试官:那你讲一下轮播器吧。
我:(上面我有说啦。这里就不在赘述了)。
面试官:你这里说做了tableView的性能优化,你做了哪方面的优化?
我:(说了一下tableView优化需要注意的点,因为比较多,我已经收录在面试宝典当中了,大家可以去看一下哟)
面试官:看出来这方面你做的挺多的工作的啊。那以你2年的工作经验来看,做iOS的app最需要注意哪些个部分呢?
我:(停顿,想了一下)我觉得首先最重要的,是用户体验(面试官点头,我就知道我说对了面试官想的,于是大胆往下说),因为苹果官方就很重视用户体验这一块,比如一些弹窗的显示,能让用户不点的就别做点的,做了2秒自动淡出那种提示。(然后再说了流畅度等其他关于用户体验方面的)。然后我觉得还有一点就是产品的一致性,就是你几个模块之间,就算是几个人合作完成了,他们的也要产生一种一个人做的感觉,有要一体感,这个也是iOS比较注重的方面吧。
面试官:你是计算机专业的,GET和POST你应该知道吧,说一下呗。
我:GET顾名思义就是从指定的URL获取资源数据,而POST是向指定的资源提交要被处理的数据,可以接收到服务器的回调。我觉得他们之间最重要的区别就是GET请求会把所有的参数拼接到URL后面(这时面试官开始点头,我就知道我答对点了),而POST会参数写在请求体中,这种是比较安全的,所以涉及到安全的,比如账号登陆还有金钱相关的一般都使用POST请求。
面试官:你说一下推送呗
我:推送我是用的极光推送,是一个第三方的sdk,在iOS做推送,需要有推送证书,这个需要有开发者账号,然后在苹果的网站来注册证书(然后讲了一下证书的流程)。
面试官:说下一个app从测试到上线的整个流程吧(如果是主负责人和独立开发一个app,必须要懂的点)
我:(太长了,我也收录在面试宝典了哟)
面试官:好的,那就这样吧,技术面试,没有什么问题,而且我之前做过一段时间iOS,后面就没做了,我感觉你的iOS水平可能比我还要好一点,哈哈哈,我可能面试不了你了,所以只是聊聊项目,我去叫领导和你谈一下别的吧!
(接着出去了几分钟,又回来了):领导都挺忙的,要不这样,再通知你时间,到时候麻烦你再过来一趟咯。
我:好的,没有问题。
这次的面试总结:这是一家以硬件为主的公司,买硬件送软件,软件算是一个附加,也算是比较常见的一种招聘iOS程序员的公司,所以一般这种公司给的待遇会相对好一点,大家要价的时候可以相对高一点。