iOS 天问 第4讲

组内转岗怎么看?

最近因为经济形势的问题, 公司项目研发投入有了收紧的趋势, 整体移动端研发接近停滞, 很多同事部分去做了前端, 部分如我一样,之前做过后端的或者开发安卓的, 去了新项目快调支援后端开发.

先说说目前的状态吧, 因为之前 Java 开发的时间和工作重点不在业务, 所以对于整个 Java 的技术栈, 仍有许多要学习的地方, 所以也是边业务开发, 边学习 Spring Boot. 就时间而言大部分时间都会花费在这一块. 但是, 对于我而言, 可以说是 身在曹营身在汉, 身心还是想铺在 iOS 上, 一个是 个人还是非常喜欢移动端的研发工作, 对于个人而言, 距离自己对于某一技术方向的要求,仍有很大的距离. 所有余下的时间, 个人定制了学习计划, 包括 极客时间的 《数据结构与算法之美》 、《iOS 设计模式》、 《iOS 面试之道》、《iOS 和 macOS 性能优化》、《剑指 Offer》等, 大部分已经略读一遍, 因为自己非科班出身,时间又大部分碎片, 所以目前想以先快速补充,再细细钻研的方式,给自己扩宽眼界。 我并不以 非科班身份而觉得会妄自菲薄,大学什么样,大家心里都明白, 努力的人,在哪儿都能给自己争取一片天空。 另一方面, 我觉得非科班反而有优势, 身份的转换,给了自己更高的视角来看待行业与专业这件事, 在计算机领域, 对于我而言,并不会有掣肘在, 可能唯一要抵抗的就是,时间与长期枯燥钻研的意志消沉了。 不过自己喜欢这个行业, 喜欢计算机的世界。

总之, 我给自己定的方向是, 先在一方面成为专家, 再去精研一两门其他的方向。 条条大路通罗马,计算机的世界还是要把基础打好。 有了认识,规划, 看法也就有了.

2018年12月04日


数据结构的简单说明

摘录自: <剑指 Offer>

数据结构一直是技术面试的重点, 大部分面试题都是围绕着数组、字符串、链表、树、栈以及队列这几种常见的数据结构展开的,因此每一个应聘者都要熟练掌握这几种数据结构。

  • 数组和字符串是两种最基本的数据结构,它们用连续内存分别存储数字(或其他元素)和字符。
  • 链表和树是面试中出现频率最高的数据结构。由于操作链表和树需要操作大量的指针,应聘者在解决相关问题的时候一定要留意代码的鲁棒性Robustness>, 否则容易出现程序崩溃的问题.
  • 栈是一个与递归紧密相关的数据结构
  • 同样队列也与广度优先遍历 DFS 紧密相关
  • 深刻理解这两种数据结构(指的是栈与队列)能帮助我们解决很多算法问题.

参考

2018年12月05日


递归的危险性在哪 ?

主要是递归可能造成的 栈溢出 问题

  • 每个栈帧都代表一个被调用中的函数
  • 递归调用使得栈帧生长, 最终栈溢出

解决方案

  • 改成非递归的方式
  • 限制递归深度
  • 自己维护一个递归栈
  • 改成 尾递归的方式, 复用栈帧

尾递归: 当递归调用是函数体中最后执行的语句, 并且它的返回值不属于表达式的一部分时, 这个递归就是尾递归. 现代的编译器就会发现这个特点,生成优化代码, 复用栈帧!! 关键是这种优化依赖于编译器, 不可靠, 很多编译器并不支持这种特性.

2018年12月06日


以何种态度做项目?

大部分人只会抱怨项目太无聊,没有挑战, 遇到问题也只会安于现状. 只有少部分人会发现工作中的"痛点", 并真正动手解决它, 给公司带来价值. 这也是提高自己,让自己和别人区分开来的重要手段! [摘自 码农翻身]

名言

任何软件工程遇到的问题都可以通过增加一个中间层来解决!