ARTS 挑战(第二周)

ARTS 挑战(第二周)

> 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS)

Algorithm

> 主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 – 酷 壳 – CoolShell。

LeetCode 1. 两数之和 解题语言 PHP

题:

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

示例:

输入: J = "aA", S = "aAAbbbb"
输出: 3

解:

class Solution {

/**
* @param String $J
* @param String $S
* @return Integer
*/
function numJewelsInStones($j, $s) {

$jArr = str_split($j);
$sArr = str_split($s);
$i = 0;
foreach($sArr as $sItem){
if(in_array($sItem, $jArr)){
$i++;
}
}
return $i;

}
}

排名

> 执行用时 : 16 ms, 在Jewels and Stones的PHP提交中击败了97.44% 的用户

> 内存消耗 : 14.2 MB, 在Jewels and Stones的PHP提交中击败了100.00% 的用户

Review

> 主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章

What are some of the most basic things every programmer should know?

  • 糟糕的架构比代码更可能导致问题。
  • 最好的程序员在持续编码。
  • 你需要花更多的时间去思考而非敲代码。
  • 总有一种更好的解决方案。(比如算法题的答案)
  • 同行的 CodeReview 会使你的代码更完美。
  • 如果代码没有测试就不要上线。
  • 不要重复造轮子。
  • 难以维护的代码,基本上没什么价值可言。

Tip

> Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。

  • Mac 视频剪辑软件 Final Cut Pro
  • MySQL 的引擎原来是针对表的,InnoDB 按页储存数据,每页大小 16k。因此字段内容不宜过大,否则每页储存数据量少从而影响性能。
  • 数据储存开销:数字 > 日期/二进制 > 字符类型;比如日期字段:时间戳 > Datatime > char。
  • InnoDB 在建表时若未定义主键则会自动生成 6 个字节的隐含主键。故最好人为定义主键。
  • 表结构设计时严禁设置预留字段,因后期业务需要很可能不符合当时考虑。修改字段和新设立字段一样费时。

Share

> Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。

最近因为市场环境不好,公司业务受到影响。所有技术都被停薪留职,也算是变相让员工自愿离职。下周开始 就要投简历了。回顾敲代码这几年经历的三家公司:

第一家公司的主要业务是 SAAS 平台,出来以后才发现原来当时公司提供了接触高并发的机会,公司的主营业务也涉及到很多小公司涉及不到的技术。但是当时浮燥,眼高手低。离开公司以后做了一段时间业务,但是高估了自己的能力和甄别事物的判断力。中间脱离技术大半年也导致的自己杭州医保断缴费,2019年的购房计划被延后了一年。这一年需要承担房价上涨的风险。虽然结果是得不偿失,但这段经历也让我意识到自己需要在技术有所沉淀。

第二家公司做的是 P2P 业务,小公司的人员架构也很简单基本上就是每个端一个技术。没有运维也就需要后端兼做运维,所幸遇到一个技术不错的 JAVA ,跟着他的指导和自己的摸索一步一步把项目部署上线。遇到愿意帮助你成长的同事,真是幸运。

第三家公司做的是属于金融行业,当时有 3 个 offer。一家外包公司,另外两家公司业务基本相同。因为 Laravel 对 后期学习 Java 有帮助,而且很希望深入学习一个框架。所以当时对 Laravel 框架情有独钟,而这家公司就是用的 Laravel。前后做了两个项目:
第一个是汽车金融项目:汽车贷款和汽配商城( B2C )两个模块。但是 1.0 版本上线后项目就搁浅了。另一个是小额贷款推广平台。通过两个项目的实战,对 Laravel 的运用熟练了还多。也养成了比较规范的编码习惯。

后面两家公司的业务都属于赚快钱的行业,业务本身就属于不可持续发展的模式。最终在这两家公司被迫离职,现在来看就并非偶尔了。

工作的几年里接触到了技术大牛-陈皓的文章,真是知道得越多不知道得就越多。重新审视了自己的技术规划,在思考三五年之后的我应该是怎样的职业状态。眼下不应该一味地追求高工资,而是得踏实的在技术上有所沉淀,而且也不能被局限与 PHP。因为客观来看,PHP 的发展潜力确实有限。未来的计划是好好学习基础知识比如:HTTP协议,数据结构与算法。而且发现英语对于程序员来说也很重要。

阿里前端于江水 写过历经 20 天,我终于完成了这份专为程序员编写的英语学习指南对于学英语来说很不错,接下来计划跟着它学习英语。目前音标学的差不多了。近几年也考虑 PTE
> PTE 学术考试是于 2009 年 10 月 26 日推出的新一代的国际性英语水平测试,由金融时报的母公司英国培生集团以及 GMAT 的开发机构管理专业研究生入学考试委员(GMAC)共同研究主办。

逛了下招聘网发现本科生比专科生多了很多面试机会。明年 10 月份也可以拿到本科学历了。高并发这块比较欠缺,所以之后会恶补这块。

相信未来会越来越好!

发表评论

电子邮件地址不会被公开。 必填项已用*标注