zoukankan      html  css  js  c++  java
  • 春招路上孤独的iOSer的心路历程(面经)

    献给目前为数不多的春招路上孤独的iOSer:
    背景: 双非渣一本,2017级大三计算机科班,算法:剑指offer 68题刷了一遍,leetcode 60题。网络、操作系统啥的 跟着书本学习然后Google查了些资料,然后大学期间做过一些有关iOS开发的实践项目。
    前言: 双非本科菜鸡的春招有些坎坷,还记得第一次面试(2019年12月12号),带有一丝丝紧张的感觉跟字节跳动的一面面试官聊了56分钟,当初没复习啥,某学长的建议早面早知道问题所在,一路聊下来,还算是基础问题都答出来了,后面问了一个LRU设计,由于没接触过LRU缓存算法,要我设计,就一路思考说了链表+map,时间复杂度没达到要求,那个时候也没想到用双向链表(太菜了QAQ).再给我一道股票算法题,不加思考的说了n方的思路,要我优化,想了几分钟代码也写出来了。没抱太大希望的给我过了。中间由于手机停机了(自己没发现),hr还加了我微信约二面(被感动!!),17号二面全程被虐(听说面试官是抖音那边转到这个部门的)。。幸好最后算法题也写出来了,也让过了。最后面hr面都过了。第一次面字节的体验非常好。后面过了一个星期多 offer 审批。 hr告诉我他们2020年计划希望招资历丰富的人。offer审批挂掉了。也算是很心痛啊。然后转到字节的data部门(听说是绝对核心部门),一二面3个小时下来(有点累),最后二面面试官给我了三个的算法题。我一个也没写出来(后面搜leetcode 算法题 都是hard难度)....就这样第二次字节挂了。。 然后带着遗憾过年了。。就开始刷算法题。开始准备春招了。

    流程:

    字节

    2019年 12-12 一面

    自我介绍

    进程和线程区别,进程间的通信、内存分区。

    内存堆和栈的区别、为什么堆上面效率高

    liunx上有没有写过进程通信的代码

    www.google.com 之后发生了什么

    Https 加密过程

    tcp三次握手

    swift struct 和class 区别

    swift static与class关键字的区别

    逃逸闭包与普通闭包区别

    iOS 多线程GCD async与sync的区别

    iOS 3张图片下载完了之后合并一张图

    设计一个缓存机制(底层数据结构是什么样子的)LRU

    股票算法题(要求0(N)时间)

    提问

    2019年 12-17 二面

    多线程代码之行情况 读代码写结果

    nonatomic 和 atomic 区别

    atamic 线程安全如何实现的

    nonatomic 一定是线程不安全的么

    swift 数组切片是什么

    swift extension的理解

    翻转链表

    讲讲对这个程序的测试用例

    最近公共父节点

    提问

    2019年 12-20 hr面

    围绕简历上的获奖 还有奖学金成绩方面问了些问题,还要一些实习时间问题。

    2020年 1-20 1、2面

    一面
    1 tableview 重用机制 滑动性能调优方法

    2圆角效率问题 离屏渲染

    3calayer 与uiview 区别 为什么这么设计

    4swift 消息机制

    5 多线程如何保证线程安全

    6 mvvm与mvc的区别

    7 你认为mvvm最大的好处

    8 如何比较两个浮点类型 为什么要这么做

    9 进程和线程的区别 为什么切换线程代价小

    10 如何实现进程间的通信

    11 信号量 管道 共享内存 效率比较

    12 设计模式你还了解哪些

    13 详细讲一下观察者模式、适配器模式、桥接模式

    14 hppts加密过程详细讲一下

    15 抓包原理

    16 如何验证加密过程的证书

    17 同步异步 串行 并发 区别

    18 最低公共父结点

    二面

    自我介绍

    swift消息机制

    swift比oc快在哪里

    https加密过程

    证书验证如何进行

    tcp如何进行拥塞控制 如何进行滑动窗口的大小变动的 根据什么

    三道算法题,不太记得了。。

    2020年 3-10日 抖音1、2面

    一面 75分钟

    自我介绍

    项目 怼了45分钟

    app启动流程优化

    app包瘦身

    设计题:根据文字长短动态设置cell

    设计题:上面题目再加一个button button 文字内容长短不一

    https加密过程

    客服端是怎么证书验证

    http用了哪些协议

    为什么8g大小的程序可以跑在4g内存上面

    汇编函数调用的参数怎么传的

    如何提高上传视频大成功率 设计方案

    算法题 :定义:给定a 计算出a各个位数之和 相加等于b 。现在给定b 求a

    二面 45分钟

    自我介绍

    项目 15分钟

    加载图片卡顿是为什么 有哪些优化方案

    图片解码时机

    设计os的复制粘贴

    假如现在有一个可以需要在三维中写字并输出结果的课题 怎么做这个课题 你的思路

    算法题 数字转汉字

    阿里

    2020年 2-17 电话一面

    自我介绍

    栈和堆的区别

    各种排序算法比较(冒泡、快速排序、归并排序、桶排序、计数排序)

    数组、链表、哈希表优缺点

    uiview与calayer的联系与区别 为什么uiview可以响应事件

    tableview的重用机制以及与collectionview的区别

    cpu和gpu的区别 离屏渲染

    mvvm与mvc

    项目亮点 野指针处理

    内存管理

    深拷贝与浅拷贝 如何进行类的深拷贝

    网易有道

    2-21 一面

    一面 70分钟

    1.聊了下目前的情况以及经历

    2.事件传递与响应链

    3.runtime机制聊一下

    4.runloop的理解

    5.mvc与mvvm的理解

    6 gcd与NSopraretion的优缺点

    7.tableview的理解重用以及调优

    8.异步加载图片原理

    9.平常调试怎么做的

    10.gpu与cpu 离屏渲染

    11.网络请求库的封装

    12.内存管理 解决循环引用又出什么问题

    13.循环引用出现的常见情况

    14.autoreleas谈谈

    15.timer为什么在子线程中不工作

    16.为什么学iOS

    2-25 二面

    二面 17分钟

    自我介绍

    实习多久、学习过哪些语言

    为什么选择iOS、学习iOS最大的困难。

    mvc和mvvm理解

    了解哪些数据结构

    散列表实现原理

    iOS内存管理方式

    了解哪些网络协议

    http 传输层用的哪个协议,版本问题

    2-27 网易有道 hr+OC

    问了一些比较常规的问题

    蘑菇街

    3-6 一面 40分钟

    自我介绍

    算法题: 两个队列实现栈

    分类extension 在oc与swift区别

    在什么时机加载(没答上来)

    oc与swift语言区别

    tableview做了哪些优化

    如何实现多个图片下载后合成一张图片

    除了gcd group之外 其他方法

    信号量与锁的区别

    mvc和mvvm的区别

    为什么从swift开始学

    如何学习iOS的

    有什么要问的?(由于感觉不错问了下评价)

    1.评价

    2.为什么UI只能在主线程刷新?

    3-12 二面 40分钟

    算法题:给定排序数组和一个值sum,找到两个值 等于这个sum。

    自我介绍

    项目相关

    tableview优化

    app启动流程

    kvo实现机制

    第三方库Alaomofire 的核心

    除了学习iOS还关注哪些技术

    提问:

    3-15 hr面 22分钟

    问了很多,都是聊天之类的。

    快手

    一面(4月2日)

    第一题:找错误 将下面这段代码的所有错误找出来并改成

    @interface homeViewControler : UIViewController { someManager *_manager; } @property (nonatomic, assign) NSNumber *flag; @property (nonatomic, strong) NSString *name; @property (nonatomic, strong) UIButton *button; @end @implementation homeViewControler - (void)viewDidLoad { self.button.onClick = ^{ if (self.flag) { self.name = @"the name"; [_manager reloadData:self.name]; } else { self.name = nil; [_manager clearData]; } }; } @end

    第二题:

    - (void)someMethod { int i = 10;//__block int i = 10; dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"%d",i); }); i = 20; }

    代码输出多少?如果用__block修饰i又会输出多少?为什么?

    第三题:手写代码

    1、使用递归,计算从1加到100的值

    2、使用递归,计算从 n 加到 m的值

    (n < m)

    3、使用递归,计算从 n,n+t, n+2t, .... n+ mt 的值

    (m >=1)

    第四题:设计题

    实现一个简单的视频播放App,用户可以播放、暂停、或者拖动进度条,也可以在多个视频源之间进行切换。

    有一个第三方的视频播放器SDK,提供一些基本的API: 1)prepare:初始化,传入播放地址 2)play:开始播放 3)pause:暂停播放 4)seek:跳到某一时刻 5)release:停止播放并释放资源 这些API都是同步的,可能会有耗时,并且该播放器对于调用的顺序有比较严格的要求,例如连续调用两次play,或者没有调用play就调用pause,都会造成异常。

    问题:如何实现这个视频播放功能,使得用户的操作能够尽早得到响应,且不会造成异常。

    二面(4月2日)

    问了很多问题,大概记得的就是:

    手写LRU、股票算法题

    MVVM与MVC的比较

    UItableView的性能调优

    Auto layout的原理

    GCD与NSoperationqueue比较

    kingsiher图像库的异步加载原理

    图像解码

    事件传递与响应

    阅读过哪些第三库源码分析一下

    由于过了四五天了 二面有些忘记了。

    hr面(4月7日)

    hr 一些常规问题,然后这个hr小姐姐好像还懂点技术,就追着我的简历不放,要我复盘项目,还要讲下技术方面的点。

    虎牙

    三面+hr面 都是电话面试,比较容易然后就忘记写记录了。估计是比较缺人叭,流程很顺利

    腾讯:

    3-24 wxg 一面

    上来三道算法题,然后问了些项目的事情,算法做得还阔以,后面晚上给挂了,也心情复杂就没记录了。

    4-12 pcg 一面

    由于拿了快手音视频的实习offer 就无所谓了,顺便面了下 聊了80分钟左右,还共享屏幕看我写代码。 后面给过了,,等着复试,4-17日 腾讯提前批结束,流程变灰了,就没参加了

    推荐 :

    如果你想一起进阶,不妨添加一下交流群1012951431

    面试题资料或者相关学习资料都在群文件中 进群即可下载!

     

  • 相关阅读:
    虚拟机下修改ip配置
    php cli 下 php.ini 配置
    centos 默认php 版本太低移到高版本的办法
    liux 防火墙以及开关
    [POI2006]OKR-Periods of Words(KMP)
    KMP
    [NOI1999]生日蛋糕(搜索)
    [HAOI2008]糖果传递
    [HEOI2015]兔子与樱花(贪心)
    [POJ3694]Network(Tarjan,LCA)
  • 原文地址:https://www.cnblogs.com/Julday/p/12889752.html
Copyright © 2011-2022 走看看