iOS面试梳理 - 2020年8月初

ByteZenithMaster
• 阅读 221

iOS面试梳理 - 2020年8月初

本次面试周期为一周,准备时间为一周。

本次面试共投递25家,约面11家,最后大厂只面了360、字节,实际面了9家,收到4家offer。

事实证明:iOS有人要,很香。

说明:16年毕业,非重点大学,非计算机专业,本科

经过这次面试,对自己的定位又有了更多的认知,由于之前工作经验的原因,音视频这块将会成为我今后的主要方向,下一次希望能做到一个资深iOS音视频工程师,我也会把更多时间放到这上面。

确实算法能考察一个人的聪明程度,这段时间完全被女票碾压,好在算法多做一些,总结规律,也能把人训练的更聪明,像奥数一样。

建议大家用C写算法题;平时leetcode也用C。

主观面试感受


  • 最右印象较差,面试官不nice;
  • 360最佳,很细心,很喜欢他们的leader;
  • 其他公司均不错
  • 几乎每一家都有算法题,但整体难度不大(大部分是动态规划+树的遍历)

360 音视频岗位


主观评价:面的是音视频中台的岗位,本以为HR会推荐业务岗,准备不充分

一面:

  • 以往直播和相机的业务考察
  • AVFoundation、GPUImage
  • 两道算法题(追问优化)

二面:

  • AVPlayer实现原理、数据缓存
  • OpenGL ES 处理流程
  • 硬编、软编
  • 直播整体流程
  • 滤镜实现原理

然后回去让我等通知,说一周内。

抖音 业务岗


主观评价:吐槽下,猎头给我很多面试题,让我背,结果一个都没遇到; 希望大家遇到一个好的面试官

  • 大数相加
  • 树的遍历(递归,队列两种方式)
  • 事件响应机制(传递链、响应链、手势)

算法写出来了但花了50分钟,然后一个小时就过去了,我。。。能力不足,leetcode还要继续。

天真互动


主观评价:这家虽然是创业公司,有三面,算上HR是4面,最后一面我感觉面试官水平超高,应该是个大神,被虐,但还是拿到了他家的offer。

  • xcode 证书校验过程
  • json转model实现
  • 动态库静态库区别
  • 用纯AVFoundation框架,向视频中加入一个水印怎么做
  • GPUImag框架介绍
  • 网络如何优化
  • camke用法
  • 视频从采集到显示,最终写入文件流程
  • AVPlayer缓存技术
  • 视频如何2倍播放,2倍速导出
  • charles原理
  • samplebuffer与pixelbuffer区别
  • CMTime结构

这个人的问题专业程度不逊于360。

最右


一面

  • crash崩溃怎么解,崩溃到底层代码
  • AVplayer 遍播遍下载
  • 如何设计一个网络库

二面

  • FBO、H264、GPUImage3、
  • 大图加载、PCM计算时间、
  • 如何实现分割滤镜、
  • 音视频编码

美术宝


主观评价:我感觉是最高效的,简洁

  • kvo
  • block
  • notification
  • runloop
  • 二面有个算法题

两次面试加一起50分钟,然后就发offer,牛。

其他公司


主观评价:大小公司都会有算法,有的用牛客网,有的用leetcode,纯手撸,无提示。

  • NSCache 应用场景 与NSDictionary区别
  • git工作流
  • 常见的锁,哪个性能最差,以及原因
  • app逆向分析
  • leak工具使用
  • charles原理
  • http与https区别
  • 组件化思路
  • 持续集成方案
  • copy、assign区别
  • 内存对齐
  • sel、_cmd、isa
  • Tagged pointer
  • 剪刀石头布
  • 最长不重复字符串
  • 大量的数字排序
  • leetcode 32
  • leetcode 1237
  • leetcode 828
  • leetcode 283
  • leetcode j67
  • leetcode 116
  • 函数调用机制
  • 消息转发
  • h5、js

总结


iOS底层:

  • kvo、
  • runtime、
  • kvc、
  • notification、
  • runloop、
  • 关键字(copy、assign、strong)、
  • block、
  • GCD

其实东西不多,理解底层对于记忆规则,有很大帮助。建议源码和《iOS和OS X多线程和内存管理》一起看,以及一些大神的文章

音视频方向:

  • 从AVFoundation入手,然后GPUImage,在然后OpenGL ES、MetalKit
  • ffmpeg、opencv
  • c\c++
  • rtmp、webrtc

其他:

  • 组件化
  • 设计模式与原则
  • 网络
  • 持续集成
  • 团队协作流程

面试没有遇到Swift的问题,有点意外,这次面试,大约有一半使用swift,有一家纯swift开发,其余都是混编,或者有业务线是swift。

建议大家先找到工作再辞职,除非工作太忙,没时间。


关于Swift

swift我也准备了,预计明年,swift相关的问题会爆发出来

  • 泛型约束
  • 关联类型
  • 类型擦除
  • where使用
  • codable 如何实现key映射
  • AnyIterator
  • sequence
  • indexable
  • collection
  • map、filter、reduce、sorted
  • 如何实现链式编程(snapkit)
  • 函数派发机制(class、struct、extension、protocol)
  • kvo失效怎么办
  • 内存管理 pwt、vwt
  • 内存,统一类型的变量可选值与非选值内存有什么区别

资料推荐

如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们的交流群1012951431来获取一份详细的大厂面试资料为你的跳槽多添一份保障。

iOS面试梳理 - 2020年8月初

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Stella981 Stella981
3年前
KaliTools说明书+BurpSuit实战指南+SQL注入知识库+国外渗透报告
!(https://oscimg.oschina.net/oscnet/d1c876a571bb41a7942dd9752f68632e.gif"15254461546.gif")0X00KaliLinux Tools中文说明书!(https://oscimg.oschina.net/oscnet/
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
ByteZenithMaster
ByteZenithMaster
Lv1
那些离乱的现实,岂能容我当作思绪来写。
文章
4
粉丝
0
获赞
0