美国工程院士、谷歌首席架构师 杰夫·迪恩 (JeffDean) John 易筋 ARTS 打卡 Week 45
1.Algorithm: 每周至少做一个 LeetCode 的算法题
笔者的文章:
题目
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :
要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"111" 可以将 "1" 中的每个 "1" 映射为 "A" ,从而得到 "AAA" ,或者可以将 "11" 和 "1"(分别为 "K" 和 "A" )映射为 "KA" 。注意,"06" 不能映射为 "F" ,因为 "6" 和 "06" 不同。
给你一个只含数字的 非空 字符串 num ,请计算并返回 解码 方法的 总数 。
题目数据保证答案肯定是一个 32 位 的整数。
示例 1:
示例 2:
示例 3:
示例 4:
提示:
解法
这个问题可以转换为爬楼梯问题,而且是加了两个条件。爬楼梯问题的动态规划公式为 dp[n] = dp[n - 1] + dp[n - 2]
.
要用
dp[n] = dp[n - 1] + dp[n - 2]
公式必须满足数字区间为11-19、21-26
如果是 10,20,则退化为
dp[n] = dp[n - 2]
;如果是个位数不为 0,则退化为
dp[n] = dp[n - 1]
;如果是
30,40... 90
,则返回-1.
2.Review: 阅读并点评至少一篇英文技术文章
笔者的文章:
人们通过构建有用的代码块来构建 Framework 框架来帮助社区,并将其分发给其他人,这样他们就可以直接使用它,而无需再次重写所有逻辑。
它在软件行业中非常有用,您可以始终依靠他人以及他人投入大量时间进行完善和测试以供他人使用的开源库/框架,我们作为软件工程师,在方便时应利用它我们。
在大型团队中,人们建立框架以使工作模块化,这有助于大型团队拆分工作,而较小的团队可以孤立地工作。同样,能够在公司内的不同应用程序中重用相同的组件/框架,而不必从一个地方重写或复制/粘贴该代码。
在本文中,我将介绍如何构建框架并使用 xcode 测试框架。
创建框架源代码
本文是由 xcode 版本 12.4 编写和测试的。打开 xcode 并从框架项目开始。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421125655920.png#pic_center =500x)
我将其命名为 mine FruitBasket,您可以选择任何内容,然后将其保存到桌面上,以便以后在构建 xcframework 时可以轻松地访问它。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421125726122.png#pic_center =500x)
什么是 FruitBasket?这是我为本文编写的一个愚蠢的示例,它基本上是一篮水果,我们应该能够向其中添加水果,并且该篮应该告诉我们其中有多少种水果,它们是什么。挺有趣的,不是吗?
首先,我将添加一个快速文件以包含要使用的多种水果的简单枚举,然后将其命名为“水果”。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421125754286.png#pic_center =500x)
如您所见,我添加了 public access 修饰符,以便能够从框架外部(即,在导入此框架时从我们的项目中)访问该枚举。
我将为水果篮添加一个简单的类。随意添加仅一个功能进行打印 Hello, world,在此示例中这并不重要。![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421125815412.png#pic_center =500x)现在框架代码已经准备就绪,让我们生成框架。
这是您需要了解的有关 xcframeworks 的知识,它们是您为他人分发的预编译代码(二进制代码)。
Xcode 为特定的体系结构构建了 framworks,因此,xcode 将为模拟器构建框架,为 iOS 设备构建另一个框架,为 macOS 和 tvOS 构建另一个框架。
在大多数情况下,当您将框架分发给客户时,您不会为它们提供单独的框架,而当它们在模拟器或 iPhone 设备上运行时它们会被替换,我们将创建所需的所有框架,然后使用 LIPO 工具来帮助我们将所有这些框架组合到一个通用框架中.framework 并进行分发。在此链接中-Yousef Hamza写了一篇非常详细的文章,介绍了如何使用LIPO。
但是,由于 Apple 引入了新的 xcframework,因此我们不再需要 LIPO。
因此,让我们看看如何创建它。
生成用于模拟器和设备的.xcframwork
首先从 xcode 中的构建设置启用 “分发的构建库”。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421125946596.png#pic_center =500x)
然后,打开一个终端窗口并导航到您的项目目录,在我的情况下,该目录保存在我的桌面上
注意:以下所有命令均用于 FruitBasket,如果您以不同的方式命名项目,则必须使用框架名称调整所有命令。
并编写以下命令,这将创建一个可以在模拟器上运行的框架。
等待它完成,您将看到成功消息。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130207845.png#pic_center =600x)
检查您的桌面,您应该看到已经在其中创建了名称为 FruitBasket-iphonesimulator.xcarchive 的 xcarchive。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042113030296.png#pic_center =500x)
然后编写此非常相似的命令为 iOS 设备创建另一个命令。
成功之后,您现在应该将两个 xcarchives 与我相同
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130328225.png#pic_center =500x)
在这里,我们需要将两者结合在一起 xcframework,将 follow 命令复制并粘贴到您的终端中,然后按 Enter
您应该知道 xcframwork 已成功编写。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042113040762.png#pic_center =600x)
检查您的桌面并寻找 YourFrameworkName.xcframework
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130431342.png#pic_center =200x)
测试框架
从 xcode 创建一个新项目,单视图应用程序可以进行测试。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130500355.png#pic_center =500x)
通过将您刚刚创建的 xcframework 文件拖放到 Framworks,Libraries 和 Embedded Content 中来添加它
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042113051956.png#pic_center =500x)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130526337.png#pic_center =500x)
现在切换到您的视图控制器并导入框架并开始对其进行测试。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130539262.png#pic_center =500x)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421130545268.png#pic_center =500x)
在模拟器和真实设备上运行它,它应该运行并为您提供相同的结果。
恭喜您创建 xcframework 了可同时在模拟器和设备上运行的第一个程序。
下一步是什么?
要了解有关二进制框架及其接口以及它们如何工作的更多信息,请观看WWDC精彩视频
参考
https://medium.com/swlh/how-to-build-xcframework-with-xcode-b3d0b3c08f43
3.Tips: 学习至少一个技术技巧
笔者的文章:
讲师:邱岳
1. 简历(你)作为产品
简历可能是你向你未来同事展示的第一个作品,关于你自己的经历、特点、审美,所以要像设计和研发一个产品那样设计好你的简历。
当谈论产品的时候,我们的思路应该依然是:用什么方法解决谁的什么问题。
谁:行业 -- 客户 -- 公司 -- 团队 -- 主管
问题:维持 - 增长 - 变现 - 探索
方案:你 + 你的技能 + 你的资源
1.1 简历的目的
如果岗位不匹配,过滤掉,若岗位匹配,获得一个面谈机会☞ 经历和成绩☞ 特点和性格☞ 方法和思路
基本情况☞ 姓名、性别、年龄、联系方式☞ 教育背景、相关账号(GitHub/公众号/博客等)
简短描述
产品与项目经验
职业经历
教育经历
技能掌握
获奖及成就
1.2 简短描述
这个人有些什么可能跟大部分产品经理不一样的【特征】。
这些跟目标岗位有什么关系。
1.3 产品与项目经理
项目背景和工作是什么,意义和价值是什么
负责具体什么职责(跟目标岗位有关系的)
应用了什么策略
取得了什么成就
积累了什么能力
1.4 职业经历 & 教育背景
一眼看清楚你的公司和职位经历,建议跟项目经理分开
教育背景干干净净写清楚,大学以后就行,不要藏着掖着
教育背景是关于【在某件事情里】取得成就的能力。
1.5 技能掌握 & 获奖成就
大家都会的不用写,工作五年没人在乎你会不会 Axure
英语四级证书不用写,雅思高分可以写
计算机二级不用写,ACM 金牌可以写
不要写精通,不要画奇奇怪怪的进度条
GPA / 排名 / 奖学金等,和别人不同、拿得出手就写
英语水平写出来要负责任的。
1.6 关于建立的几个建议
不要造假不要造假不要造假不要造假!
不要写敏感数据和商业机密
修改精简,考虑一下简历的阅读场景,每份简历的阅读时间都很短
把排版整利索一点,不要用奇怪的图和字体,不要用 QQ 邮箱奇怪的昵称。
尽量用 PDF 格式,如果有作品集,想一下人家怎么看。
尽量不要一份简历投四海。
2. 产品经理面试
2.1 核心考核
逻辑能力、学习能力、沟通合作能力、数据能力、执行力、抗压能力
行业理解和行业经验、行业认知和行业常识、潜力
人品、性格、战斗力、稳定性
其它风险因素
2.2 核心展示
做过什么,取得什么成绩,用了什么策略,有什么思考,在其中承担什么角色。
对行业和岗位的理解和认知
个人特点、性格、做事风格和方法
跟招聘岗位的匹配
其它,比如审美、业余爱好、学习能力等。
2.3 产品经理面试的态势
有现成的人设 / 没有现成的人设
急聘 / 慢聘
为什么这个人可以 / 为什么这个人不行
合作 / 对立
2.4 产品经理面试的经典问题和回答思路
介绍一下 XX 项目,背景 - 目标 - 策略 - 流程 - 结果 - 你的职责 - 你的能力。
你的考核指标是什么。你的协作团队的考核指标是什么。你认为合理吗?
你负责的产品最关注哪些数据指标,为什么。你的产品关键策略是什么,为什么。
你怎么理解产品经理这个岗位。你认为产品经理是做什么的。你为什么想 / 适合做产品经理。怎么评估产品经理的绩效。产品经理最重要的能力是什么。
你如何做产品规划。如何丛方案决策。如何处理优先级冲突。
你如何跟其他角色合作。什么流程。如何处理冲突。
平时怎么学习。哪里看行业资讯。吸收新知识。有没有自学经历。
什么产品是好产品 / 成功的产品。你怎么看 XX 产品。你认为 XX 产品和 XX 产品有些什么异同。介绍一下这个 App。你怎么看待这个行业。你觉得 XX 的机会是什么。
XX 产品做了 XX,你认为合理吗,为什么。如果你负责 XX 产品,你最想做什么。
你认为 XX 产品最关注的产品指标可能是什么。
产品和运营什么区别。怎么做协作。
过去工作中最大的挑战。最大的压力以及如何克服。最大的失败和挫折。
最有成就感的经历是什么。
如何评估一份工作对你的价值,优先级是什么。
如何让你来做我们的 XX 产品,你会怎么做。
你怎样做用户调研。如何冷启动。
脑筋急转弯题
为什么离职?
你的待遇期望大概是什么情况?
你有什么问题?
2.5 关于面试的几条建议
不要迟到,注意个人仪容仪表和口气清新
提前准备好自我介绍和问对方的问题
提前研究一下对方的公司和产品
积极向上,气场足一点,不要丧,不要焉了吧唧
双向选择,适合最重要。
尽量不要裸辞
尽量不要在失意的时候换工作
早期不要太在意工资
早期长身体:主管 > 团队 > 业务 > 公司 > 行业;后期做事情:反之。
是要成为通用产品经理还是行业产品经理。
2.6 产品经理的几条发展路径
产品经理 > 横跨运营 / 业务职责 > 业务负责人
产品经理 > 大产品经理 > 业务负责人
产品经理 > 产品负责人 / 合伙人
产品经理 > 产品线产品团队管理 > 公司产品团队管理
3. 关于建立个人影响力
写作 / 视频☞ 对内 & 对外☞ 短促的观点和思考☞ 坚持写
交朋友☞ 参加行业会议,参加一些社群。
唐韧的社群 > 唐韧的产品星球
纯银的社群等等 > 黄埔犬校
核心还是你自己对别人有价值
跟人聊:大家可以在群里看看有没有喜欢的,常聊聊。
5. 寻找行业中的变化
关键词:
产业链全景图知乎:一张图看懂100大产业链全景图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416124648404.png#pic_center =700x)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416124722412.png#pic_center =700x)
变化趋势Google 趋势
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416125033330.png#pic_center =700x)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416125100870.png#pic_center =700x)
4.Share: 分享一篇有观点和思考的技术文章
笔者的文章:
人的差距是数量级的、美国工程院士杰夫迪恩、比贫穷更可怕的是、吾生也有涯
吴军老师的《硅谷来信》一二三季 感触总结
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210413230254884.png#pic_center =250x)
1. 工程师分为了五个等级
1.0 物理学家的分级
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210413230202766.png#pic_center =250x)
苏联著名的物理学家朗道提出了一种按照水平和贡献划分物理学家的方法,被称为物理学家的等级。按照朗道的理论,物理学家可以分为五个等级。第一级最高,第五级最低。每一级之间能力和贡献相差十倍。
在第一级当中朗道列出了当时十几个世界级的大师包括波尔、狄拉克等人。
在第二级中全世界也只有几十位,朗道将自己列入了 2.5 级,在获得了诺贝尔奖后,将自己提升到了 1.5 级。
在所有的物理学家中朗道给出了一个零级的物理大师那就是爱因斯坦。
朗道等级最核心的思想是,人和人的差距,能力和能力的差距是数量级的差别而不是通常人们想象的差一点点。
1.1 吴军老师学朗道把工程师分为五级
第五级:能独立解决问题,完成工程工作。
第四级:能指导和带领其他人一同完成更有影响力的工作。(年薪 >100 万)
第三级:能独立设计和实现产品并且在市场上获得成功。
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代。
第一级:开创一个产业。
1.2 第三级工程师
对于第三级的工程师就应该能够独立带领人,做出一个能够为公司挣得利润的产品,这里面除了上述能力之外,还涉及到对市场的判断和营销能力。
很多人说我就是做工程的这个东西是否有用我不清楚,有什么事情你叫我做就好了。这样显然达不到第三级的要求。第三级的工程师本身必须是非常好的产品经理,一个良好的工程素养的人。
如果心胸开阔,愿意接受各种意见和建议,经过努力和是可以做到这一步的。你可能奇怪我为什么专门强调心胸开阔呢?因为人有多大的心,就能做多大的事情。有人抱怨自己作为工程师收入和社会地位太低,我想如果你能做到第三级,那就已经不低了,当然再往上就不是很多人能够做到了。
1.3 第二级工程师
第二级是能够做出先前没有的东西都人,世界会因为他们多少而有点不同。
举几个例子,比如北极光风投的创始人邓锋,在他之前,世界上没有真正意义上的网络防火墙设备,他们做出了这个设备,并且成功创立的当时世界上最大的防火墙公司,这个公司在被收购之前市值大约是 20 亿美元,他可以算得上是二级工程师。
另外谷歌云计算的发明人迪恩,也可以算。你如果能够称为二级工程师非常好,但是如果不能也没有关系,不必对自己太苛刻;
1.4 第一级工程师
第一级就是开创一个产业的人,包括爱迪生、福特、贝尔等人,这可能离我们远了一些,我想接下来大家就应该知道自己努力的方向了,没提高一级你的影响力和收入就会增加很多,当然对你的综合能力的要求也会多得多。
2. 美国工程院士、谷歌首席架构师 杰夫·迪恩(JeffDean)
博士简历:杰夫·迪恩(Jeff Dean)是谷歌首席架构师、谷歌研究院高级研究员、谷歌人工智能团队谷歌大脑(Google Brain)负责人,华盛顿大学博士、美国工程院院士、ACM(计算机协会)会士(fellow)、清华大学 AI 研究院计算机学科顾问、AAAS(美国科学促进会)会士(fellow)。他在谷歌负责过许多大型项目,如领导开发支持谷歌运行的超大规模计算框架 MapReduce 和机器学习标志性软件 TensorFlow,近两年推动谷歌大脑培训生计划(Google Brain Residency Program)。数据简化社区“科学 Sciences”新媒体,旨在帮助科学爱好者和工作者从思维方法上接近科学技术殿堂。
杰夫·迪恩成功的原因在于做减法,少做事情。他在 Google 20 多年,做出来的产品是个位数的,但是每个都是改变世界的产品。
比如:
连续五代谷歌 http://www.google.com 爬取索引和查询检索系统的共同设计者和实施者,涵盖的搜索文档数量,每秒处理的查询数量和频率增加了 100 倍至 10000 倍系统更新。
谷歌广告感内容(Google AdSense for Content)产品初始版本的设计者和开发者,涉及生产服务系统以及基于页面内容开发和提高广告选择算法质量的工作。
MapReduce 的共同设计者和实现者,该系统可简化大型机器集群上大规模数据处理应用程序的开发。
BigTable 的共同设计者和实现者,大表是在大约 50 种谷歌产品内使用的大型半结构化存储系统。
谷歌翻译(Google Translate)生产系统设计的许多方面的联合设计者和实施者,谷歌翻译是一种统计机器翻译系统,尤其是可以对大型语言模型(太大而无法容纳在一台机器上的内存)进行分布式高速访问的系统。
扳手(Spanner)的共同设计者和实现者,Spanner 是一种大规模的全球分布式存储系统,用于谷歌几种重要产品。
TensorFlow 大规模分布式神经网络训练系统的共同设计者和实现者。该系统已用于显着改善图像理解,语音识别和自然语言处理应用程序。
由于 Jeff 太过于强悍,很多人称他是 google 的能力之源,下面是挑取的几条有关他的“传说”:
传说一:“Jeff Dean 提交代码前会编译和运行他的代码,只是为了检验编译器和链接器有没有问题。”
传说二:“所有的指针都是指向 Jeff Dean 的。”(指针是 c 中的一个函数)
传说三:“编译器从不会给 Jeff Dean 警告的,Jeff Dean 会给编译器警告的。”
传说四:当 Jeff 向以太网发送一个数据包时从来不会有冲突,原因是本来要和它有冲突的包都默默撤回了缓冲区
传说五: 当 Jeff 听 MP3 时,他查看其中的二进制内容然后在他脑子里进行音频解码。
推荐杰夫迪恩 2021 的文章Google Research: Looking Back at 2020, and Forward to 2021
https://ai.googleblog.com/2021/01/google-research-looking-back-at-2020.html
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210413231239834.png#pic_center =600x)
3. 比贫穷更可怕的是什么?
吴军老师的新书《见识》提到了一个观点,他发现活的诸事不顺的人都有三个共同的问题。
缺乏见识
缺乏爱
缺乏规矩
3.1 缺乏见识
缺乏见识,一个人的视野就被局限了。跟有些人讲道理永远都是讲不通的。并非是那些人故意要与你做对,而是因为他们没有见识,大家的认知水平不在一个平面上。就如庄子所说的:夏虫不可以语冰,笃于时也;曲士不可以语道,束于教也。不要跟见识不长进的人来往,更不要跟他们争论,因为道理讲不通,徒费口舌。
3.2 缺乏爱
缺乏爱,缺乏爱的人表现就是小家子气,成不了大事。有人说缺乏爱是因为贫穷,然而也有富人极为贪婪,也有穷人并不小气。爱,与财富无关。更多的还是小时候没有受到关爱他人的教育。缺乏爱的人难以大气,不大气的人做不成大事。很多人以为有了钱就有了一切,但如果钱只花在自己的享受上,并没有发挥它的最大效能;相反,如果能花在别人身上,投入到社会再生产中去,将会获得更高的回报。
3.3 缺乏规矩
缺乏规矩,这会让人踩到别人的脚趾而不自知,其结果是,轻则没有人愿意帮助他们,重则大家会和他们做对,而这个世界上没有人帮助是不行的。当然,这些人也会感觉到别人对他们不友善或敬而远之,但是常常还不知道原因,于是便对人、对社会产生一种戾气。
缺乏见识、爱、规矩,是比缺钱更可怕的事情。它们的缺乏其实和穷没有必然联系。贫穷可能会在短期内使物质条件差一点,但是并不影响父母在见识、爱和规矩上培养好孩子。有了这种意识,做到这些事情并不难。反之,家里富裕,孩子也不一定就有见识、有爱心、守规矩。所以,小时候的贫穷不是孩子将来不能成功的理由。
3.4 伪工作者
很多人每天都很忙碌,但你问他在做什么事情,却往往得不到答案。因为他们做的事情都是一些琐碎应付的差事。而这些差事占据了他们所有的时间。在谷歌等美国公司里,这样的人被叫做 pseudo worker,也就是伪工作者。这些人看似很忙,做的工作却不起什么效果。在 IT 行业如果一个公司里面这样的伪工作者很多,完成了很多伪工作,用不了多久这个公司就会处在竞争的下风。
马尔科姆·格拉德维在《异类》这本书里提出了一个观点,把什么事情做好,至少要花 10000 小时来练习。这个观点很多国人都了解,并且也接受。但罗胖在罗辑思维第 185 期《即将到来的社会阶层》里提出一个不同的观点,那就是你花了 10000 小时也可能没用。因为思维方式、周围环境、境界等因素,比下笨功夫要重要。当然,我们也有指导如何做练习的书,可以让人把笨功夫变成聪明的练习,比如安德斯·埃里克森的那本《刻意练习》。
4. 吾生也有涯,而知也无涯
庄子在《养生主》一章中讲了这样一句话:“吾生也有涯,而知也无涯,以有涯随无涯,殆矣。已而为知者,殆而已矣。”它的大意是,我的生命是有限的,但是知识是无限的,以有限的生命追求无限的知识,是要失败的。已经知道这个事实还要为之,失败是确定无疑的了。他清楚的告诉我们,时间有限,不可能什么事情都要做,必须要有所舍弃、顺其自然。
很多时候,我们会陷入一种思维定式不能自拔,就是临时插进来的事情必须要做,不做就没礼貌、没面子,或者就亏了。其实那些事情如果不做,天根本不会塌下来。如果一个人不能把一件事情做好,他首先想到的就应该是少做事情,而不是让自己更忙碌。
跳出思维定式有时需要大胆反常规思考,甚至舍弃很多利益。当跳出思维定式重新审视人生时就会发现,可以不做的事情实在是太多了。接下来就是下决心少做事,然后把几件该做的事情做好就行了。
既然我们的生命有限,我们需要时刻提醒自己的就应该是少做事情、做好事情。人有一个弱点,就是见到小便宜想去占,很多利益舍不得放弃,结果把自己搞得每天忙于应付差事,水平没有长进,本职工作可能也没有做好。
庄子讲,“吾生也有涯,而知也无涯”,不仅学习如此,做事更是如此。人生成功的秘诀在于做减法,而做减法的关键在于能够跳出一般人的思维定式,找到那些其实无关紧要的事情,然后下决心把那些事情放弃掉。
参考
版权声明: 本文为 InfoQ 作者【John(易筋)】的原创文章。
原文链接:【http://xie.infoq.cn/article/24b6c2568a4a02daec052335f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论