美文网首页题库
ios面试日记 --- b站一面

ios面试日记 --- b站一面

作者: ShawnAlex | 来源:发表于2021-07-27 15:48 被阅读0次

最近一直忙于处理换工作的事情, 这里记录下 2021.7 我面试b站的遇到的面试题以及面试后的一些反思。

问题1.为什么从上一家公司离职

这种问题, 绝对不能回答对上家公司的任何不满情绪, 例如工资低, 公司福利差, 环境差等。这一点大部分人都明白, 但是这道题其实也是为后续陷阱题做了个铺垫, 所以要慎重回答。

我当时的回答:

1.公司搬家( 我离职的公司当时的确搬家 )
2.出于自身发展考虑, 想学习更多的东西, 去外面见见世面

其实这种回答在面试官眼里漏洞百出, 比如: 反问你目前是上海租房, 为什么不搬到新公司附近? (庆幸还好我当时没问...) 自身发展顺势会问到 问题2

忌讳

谈及上一家公司任何问题, 尤其是"赚的少", "干得不爽", "老板画的"饼这种 抱怨类型, 建议不提任何上一家信息

建议

  • 从自身职业发展角度陈述, 例: 因为公司规模有限,确实无法给我提供想要的发展平台。XXXX(新公司和职位)更符合我个人的职业取向。

  • 对新公司新职位感兴趣, 例: 我在学习中发现自己对音频视频方面很感兴趣,希望沿着这个方向发展,但之前公司没有这方面项目寻求新的机会

问题2.你的人生规划是什么

因为我第一问回答, 从自身发展角度, 那么面试官顺势问了人生规划。( (╥﹏╥) 给自己坑进去了)

我当时的确没有答上来, 因为不过面试官人很好给了我几个方向

  • iOS程序员 -> 中级IOS程序员 -> IOS架构师
  • iOS程序员 -> 中级IOS程序员 -> 高级IOS程序员
  • iOS程序员 -> 项目经理 -> 技术总监
  • iOS程序员 -> 业务方向
  • iOS程序员 -> iOS培训讲师
  • iOS程序员 -> 产品/测试

问题3.为什么选择我们公司(bilibili)

一定要留意! 一定要留意! 一定要留意!, 这种问题表面没什么就是简单的互相了解下, 但是本质是一道实实在在的陷阱题。

我当时的回答:

我提前了解下这个职位(是音视频方向的App, 语言是swift), 我本人对音视频方面比较感兴趣, 同时也是资深老二次元玩家, 所以想跟一样志同道合的朋友一起工作。而且我音视频, 及swift方面比较薄弱, 也希望再公司能学习, 提升下自己。
( 内心: 不是你们招聘说缺人, 三顾茅庐请俺出山吗? hhh, 玩笑, 玩笑 )

面试官也是个友善的提示了我, 我这边更希望回答: 你能给我们带来什么? 我: ......

这道题需要先想好, 此时你是仅仅是个面试者, 抛弃内推, 招聘专员找上你等这种思想。我感觉只能从这几个方面回答

  • 明确选择该公司/岗位的原因
  • 熟悉该公司的基本情况以及岗位信息
  • 寻找自身与当前岗位匹配的优势
  • 自己哪方面有特长, 在对应岗位能有发挥

上面这个三连问我直接蒙圈, 虽然都是简单问题, 但是小厂跟大厂对待角度是不一样的, 回答一定要 慎重! 慎重! 慎重!


问题4.什么是dns?

从第四题开始是正式问题技术问题。这个也是我比较喜欢的面试形式, 因为我自己面试别人也会这样面试 2道网络题2道算法/数据结构专业技术知识思维拓展题

答案:

域名系统

域名系统(Domain Name System, DNS 记住最好)是Internet上解决网上机器命名的一种系统。Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。

一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。

详细: https://baike.baidu.com/item/域名系统/2251573?fromtitle=DNS&fromid=427444&fr=aladdin

问题4.1 追问: dns跟ip区别

一个作为主机的逻辑地址,一个作为域名解析服务器的访问地址。

  • IP地址是用来唯一标识互联网上计算机的逻辑地址
  • DNS是进行域名解析的服务器的访问地址, 域名的最终指向是IP

一个IP地址可以对应多个域名,一个域名也可以解析为多个IP地址(https不可以, 因为SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名)。

问题5.什么是cdn

CDN( 全称是Content Delivery Network 记住最好 ),即内容分发网络CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡内容分发调度等功能模块,使用户就近获取所需内容降低网络拥塞提高用户访问响应速度和命中率CDN的关键技术主要有内容存储和分发技术。

组成:

CDN网络中包含的功能实体包括内容缓存设备内容交换机内容路由器CDN内容管理系统等组成。

主要功能:

  • 节省骨干网带宽,减少带宽需求量;
  • 提供服务器端加速,解决由于用户访问量大造成的服务器过载问题;
  • 服务商能使用Web Cache技术在本地缓存用户访问过的Web页面和对象,实现相同对象的访问无须占用主干的出口带宽,并提高用户访问因特网页面的相应时间的需求;
  • 能克服网站分布不均的问题,并且能降低网站自身建设和维护成本;
  • 降低“通信风暴”的影响,提高网络访问的稳定性。

基本原理:

    CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

详细: https://baike.baidu.com/item/CDN/420951?fr=aladdin

问题6.链表怎么查找到倒数第k个值(倒数第K个节点)

相关题目剑指 Offer 22. 链表中倒数第k个节点: https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/

例如: 1->2->3->4->5, k = 2, 返回链表 4->5.

我回答是: 递归, 递归处理整个链表, 把节点存到数组中再根据对应索引获取对应元素

问题6.1追问 不额外建立, 使用2个指针怎么处理

  • 初始化2个指针first, last, 指向头节点head

  • 前指针first先移动k步, 此时first, last间距 k

  • first, last 共同移动知道first走过尾节点跳出, 此时last就是我们要找的返回值

初始 移动k位 双指针同时移动 结果

参考代码:

    func getKthFromEnd(_ head: ListNode?, _ k: Int) -> ListNode? {
        
        if head == nil || k == 0 { return nil }

        var f = head, l = head 

        for i in 0..<k-1 { //0到k-1开区间
            if f?.next != nil {
                f = f?.next
            } else {
                return nil
            }
        }

        while f?.next != nil {
            f = f?.next
            l = l?.next
        }

        return l
    }

问题7.重大节日App换肤, 换主题, 换图片, 你会怎么设计

  • 本地换肤: 更新本地存放2套资源文件, 根据时间进行换肤

  • 远程换肤: 可用请求, 可以用通知/自定义消息换肤

我见过那种请求的类似这种缓存图片, 缺点是网络不好的情况下可能不会改变


请求接口
  • 下载换肤: 我看网上有这样处理的, 安装APP后先看沙盒里是否有皮肤文件,没有接口请求下载zip文件包。
image.png

使用的CategoryKVO去实现了替换皮肤的过程。例如: 给UIButton添加一个Category,添加了设置皮肤的方法,通过KVO去实现了触发控制。

一般皮肤下载完成之后可以去立即触发换肤,也有它是第二次启动的时候才去替换,可能因为是高频APP吧。

问题8.三个页面传递500个字段, 你会怎么设计

因为页面传递: 直接传, 代理传, 通知传, 单例传, 本地存储传

考虑到数据很多, 我当时回答: 沙盒, 存本地, 三个页面获取/修改直接对存储数据进行相应读写即可, 用完删除, 不太清楚是正确答案。

之后补充...

问题9.你还有什么问题要问我的吗?

这个问题很开放, 但是其实是一把双刃剑问题

  • 问好: 加分
  • 问错: 减分

我当时只问了一个, b站面试一共需要几轮, 我这边好合理安排时间。面试完

建议

  • 深入的了解你要面试岗位的一些具体要求
  • 当前面试岗位未来的发展状况是什么样的?
  • 当前部门的组织架构是怎么安排的?
  • 公司/当前岗位有没有学术交流, 知识交流, 讲座等培训学习

展现出你好学一面

选问

一些知识点或者技术实现方案。我有次面试别的公司, 最后问了下: 大批量请求问题。当时面试官只是回答了: 这方面我不是特别了解, 导致场面很尴尬......

所以技术问题慎问!!!

忌讳

这个可能从我自己角度, 我面试别人时候很忌讳问, 我刚才的出面试题。因为面试官都会保证面试的严密性, 一方面我解释也不会特别清晰, 同时也是为了防止漏题。


总结

大厂跟小厂的面试还是很大区别, 尤其是思想格局。谈话是一种艺术, 回答自然也是一种艺术, 除了技术方面, 最好还是要准备一些话术。

建议:

  1. 如果有 学历/实力/机会, 一定要试一试大厂, 开阔下自己眼界, 毕竟这个世界很大的。
  2. 接地气一些, 都是打工人, 看重的肯定是利益关系。而大厂相对福利待遇更好一些, 更能满足利益需求。
  3. 但凡问出来问题一定有其道理, 不要盲目回答, 一定要思考一下。

后续

b站反馈结果很快, 1天就会给回复。 从" 格局 " 开始错了, cdn和链表, 500个字段问题回答都很一般 , 自然收到了的是一封遗憾邮件。不过我对这次面试收获了很大, 很多经验在之后的面试中都可以用到。

相关文章

网友评论

    本文标题:ios面试日记 --- b站一面

    本文链接:https://www.haomeiwen.com/subject/yjammltx.html