百度移动面试

news/2024/7/20 12:32:08 标签: 面试, 设计模式, 内存管理

1面

  • Objective C runtime library:Objective C的对象模型,block的底层实现结构,消息发送,消息转发,这些都需要背后C一层的描述,内存管理
  • Core Data:中多线程中处理大量数据同步时的操作。
  • Multithreading:什么时候处理多线程,几种方式,优缺点。
  • Delegate, Notification,KVO, other 优缺点

runtime有一点追问,category,method 的实现机制,class的载入过程。 1面整体感觉不错,40分钟不到,感觉回答的还可以。被通知一会儿二面。

2面

二面的时间非常长,差不多将近3个小时,直接面到快下班了。1面问的主要是知识点。2面问主要考察的是设计解决方案的能力,另外辅助追问的方式,考 察深度和广度,回答过程中需要列出适合的具体例子,方案还需要细致到具体的关键的函数名称,方法。另外考察设计模式的理解,最后还考了算法。因为时间太长,这里记录一些重要的问题。

  1. 设计一个progress bar解决方案,追问到 Core Graphic、CGPath、maskLayer。
  2. 设计一个popup view被追问到 keyWindow、UIWindow的layer、UIView hierarchy。
  3. 设计模式的角度分析Delegate、Notification、KVO的区别。被追问到自己写的library和开源的项目中用到哪些设计模式,为什么使用,有哪些好处和坏处,现在能否改进。
  4. 算是问题3的追问,设计一个方案来检测KVO的同步异步问题。willChange和 didChange的不同点,然后被追问到有没有其他地方也有类似情况,被追问到Core Data 中falut object。
  5. 这个是问题4的追问,设计一个KVO系统。
  6. Multithreading,什么时候采用Multithreading方案,以及理由。追问到系统还有哪些在后台运行的thread,被追问到view life cycle、iOS6之后的不同以及内存管理
  7. Multithreading中常常遇到的问题,追问到死锁,优先级翻转,线程池等。
  8. 百度有一个亿级别的APP需要统计用户行为的日志系统。不使用数据库,只是使用普通文件,设计一个系统。被追问到内存映射文件。这个问题本来是服务器的问题,我表示从来没做过,回答很瞎。

算法考了2个。一个是如何求2个集合的交集。另一个是百亿数据中查找相同的数字以及出现的次数。

最后还补充了几个小问题

  • 自己对可穿戴设备的感受
  • 自己如果进入这个team,自己准备做那方面的事情
  • 为什么创业,自己未来规划

一会被告知3面,但是因为太晚,约到次日下午3面。

3面

3面的时间和1面差不多40分钟,问了几个问题,主要是考察精神层面的东西。

  • 为什么做Windows Mobile
  • 为什么改iOS
  • 为什么来百度
  • 为什么iPhone 可以成功,那些吸引你
  • 如何看待AppStore 现在的生态圈

后面就是他说的多一些,介绍团队遇到的困难以及14年团队的打算。最后他给了我2句话的评价,我觉得还是蛮对的。

  • 选择的时候都是经过深思熟虑的
  • 有野心,wanna make a difference

有意思的是,他说他也wanna make a difference。

总结

整体还是挺尴尬的,几乎所有的知识点都是1,2年前积累的,13年积累的东西基本上没有,都是一些虚的东西。 2面挺好的,暴露了自己不少问题,设计模式那部分几乎没有概念了。

最后

面试通过,我个人觉得2面我的问题在思考设计模式上面少,另外在window hierarchy 上面有不足。设计 KVO 上面在 didChange上面考虑不足。这些都是被当场戳穿的。 有一点疑虑的是整个面试中并没有问到Core Animation。这个还是我蛮喜欢的部分。Anyway 个人很喜欢追问的方式,很容易考察出来理解的深度和广度。

整个面试收获很大,发现了很多不足。另外1,2面的面试题目个人觉得也不错。这里分享给大家。

转载于:https://www.cnblogs.com/starainDou/p/5108974.html


http://www.niftyadmin.cn/n/1749589.html

相关文章

Apache Flink不止于计算,数仓架构或兴起新一轮变革

作者 | 蔡芳芳 采访嘉宾 | 王峰(莫问) 维基百科的“Apache Flink”词条下,有这么一句描述:“Flink 并不提供自己的数据存储系统,但为 Amazon Kinesis、Apache Kafka、Alluxio、HDFS、Apache Cassandra 和 Elasticsearc…

mybatis和分布式mysql_分布式 | springboot+sharding-jdbc+HikariCP+mybatis 做读写分离

javaDEMO本网站记录了最全的各种 JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, Spring 的, MyBatis 的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https://www.javastudy.cloudsharding-jdbc 简介现已更名为: sharding-sphere,官方网址如下https://shardingsphere.ap…

fmdb使用

[iOS]数据库第三方框架FMDB详细讲解 字数1706 阅读2976 评论17 喜欢110[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦。于是,就出现了一系列将SQLite API进行封…

贫苦云主机用户的安全加固策略

上次去北京出差,为了便捷地访问家里内网中的一些服务,就在腾讯云服务器上部署了一个 frps 服务,在本地内网的 Openwrt 路由器上安装 frpc 客户端,将内网中的一台 Windows 服务器穿透到腾讯云服务器上。然后通过 Windows RDP 远程连…

mysql git 获取 稳定版本 源码_代码管理(一)git

1 01. GIT简介(PPT)2 34 02. GIT命令行帮助5 6 $ svn help7 查看svn所有命令的帮助8 $ svn help 子命令910 # 要退出帮助信息,按"q"11 # 翻看下页,按"空格"12 # 翻看上页,按"CTRLB"13 # 要搜索相关文字&#x…

SICP 习题 (2.6) 解题总结:丘奇计数

SICP 习题 2.6 讲的是丘奇计数,是习题2.4 和 2.5的延续。这里大师们想提醒我们思考的是“数”究竟是什么,在计算机系统里能够怎样实现“数”。准备好開始脑洞大开吧:题目先讲到以下的定义,首先是0的定义:(define zero …

Prometheus Exporter 黑盒监控 Kubernetes 服务

系统环境:操作系统: CentOS 7.9Docker 版本: 20.10.8Prometheus 版本: 2.29.1Kubernetes 版本: 1.22.4BlackBox Exporter 版本: 0.19.0示例地址:Kubernetes 部署 BlackBox Exporter 的部署文件[1]一、BlackBox Exporter 是什么BlackBox Exporter 是 Prometheus 官方提供的黑盒监…

mysql数据库call_MySQL数据库命令行【篇章十二】之过程与函数(delimiter+call+begin+end+declare)...

1) 理解存储过程和函数的概念。2) 掌握创建存储过程和函数的方法。3) 掌握执行存储过程和函数的方法。4) 掌握游标的定义、使用方法。使用choose数据库,完成下列任务。创建一个存储过程,计算abc的值。创建一个存储过程,根据准考证号查询学生的…