洋仔的博客 洋仔的博客
首页
  • 个人心法总结

    • 价值心法
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • iOS基础知识
  • 前端
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 投资体系
  • 毛选
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

洋仔

奋斗的小青年
首页
  • 个人心法总结

    • 价值心法
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • iOS基础知识
  • 前端
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 投资体系
  • 毛选
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

  • GitHub技巧

  • Nodejs

  • 博客搭建

  • iOS基础知识

    • iOS底层相关

    • Runloop系列

    • Runtime系列

    • 内存管理系列

    • Block系列

    • 线程系列

    • KVC跟KVO系列以及通知中心

    • UI系列

    • 离屏渲染系列

    • 组件化系列跟架构

    • OC跟webview交互系列

    • 持久化系列

    • APP编译系列

    • APP性能优化系列

    • cocoapods系列

    • swift系列

    • Git系列

    • 网络相关

    • 三方库系列

    • 系统原理

    • 总结系列

      • 总结面试题有感
        • 有感一: 知其然,知其所以然
      • 面试
    • 算法系列

    • 数据结构系列

  • 前端

  • 技术
  • iOS基础知识
  • 总结系列
洋仔
2023-09-21
目录

总结面试题有感

# 有感一: 知其然,知其所以然

先介绍一下面试中觉得比较吃力的问题: 如果让你实现属性的weak,如何实现的? 如果让你来实现属性的atomic,如何实现? KVO为什么要创建一个子类来实现? 类结构体的组成,isa指针指向了什么?(这里应该将元类和根元类也说一下) RunLoop有几种事件源?有几种模式? 方法列表的数据结构是什么? 分类是如何实现的?它为什么会覆盖掉原来的方法?

这次面试让我深刻意识到了两点:

对于每个设计,不能只停留在“会用”而已,应该理解它的实现机制,而且几乎每个设计都是与数据结构息息相关的,理解了数据结构和指针会有助于理解这些设计。 了解设计的原理之后,还要知其所以然:为什么这么设计?最好还要知道这个设计存在什么缺陷,这个缺陷是哪个解决类似问题的设计所没有的? 第一点是“how”的问题,第二点是“why”的问题,然而我相信有不少人只停留在“what”和“using”上。

在面试的时候,我强烈感受到了面试官的功力之深:给我的感觉,对他而言,几乎所有的设计都可以用某种数据结构解释出来(有的时候也会结合指针),对知识点理解得非常透彻:即便是很简单知识点,也能说出很多深层次的东西来。而我自己只是刚开始学数据结构不久,在面对提到数据结构的问题几乎是没有思路的。

编辑 (opens new window)
上次更新: 2024/10/23, 23:26:17
五大内存区
面试

← 五大内存区 面试→

最近更新
01
数组
10-25
02
数组双指针系列之对撞指针
10-25
03
数组双指针系列之快慢指针
10-25
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式