File tree 7 files changed +311
-0
lines changed
7 files changed +311
-0
lines changed Original file line number Diff line number Diff line change 3
3
* [ 前言] ( README.md )
4
4
* [ Web 篇] ( chapter1.md )
5
5
* [ PHP 篇] ( php-pian.md )
6
+ * [ Laravel 篇] ( laravel-pian.md )
7
+ * [ MySQL 篇] ( mysql-pian.md )
8
+ * [ Linux、Git 篇] ( linuxgit-pian.md )
9
+ * [ 程序员如何写好一份简历?] ( cheng-xu-yuan-ru-he-xie-hao-yi-fen-jian-li-ff1f.md )
10
+ * [ 结语:写给程序员的一些建议] ( jie-yu-ff1a-xie-gei-cheng-xu-yuan-de-yi-xie-jian-yi.md )
11
+ * [ 扩展阅读整理] ( kuo-zhan-yue-du-zheng-li.md )
6
12
Original file line number Diff line number Diff line change
1
+ > 程序员的简历在求职的时候,尤为重要,简历就是销售自己的明信片,一份优秀的简历,能为你带来更多的面试机会。
2
+
3
+ 我自己写了不少了简历,也指导过很多朋友写过简历,同时也看过不少程序员的简历,一份好的简历应该这么写:
4
+
5
+ 1 . 简历的格式推荐使用 PDF,兼容性强且不易乱序
6
+ 2 . 简历的排版要简单明了、一目了然、结构清晰
7
+ 3 . 清晰罗列出个人基本信息
8
+ - 姓名、性别
9
+ - 学历、毕业院校
10
+ - 电话、邮箱
11
+ - 居住地、期望地
12
+ - 求职岗位、期望薪水
13
+ - 最好有个人博客、GitHub 地址
14
+ 4 . 技术栈
15
+ 5 . 工作经历
16
+ - 哪家公司、担任职位
17
+ - 起止时间
18
+ - 工作职责
19
+ 6 . 项目经历
20
+ - 这个项目是什么
21
+ - 你负责处理了什么
22
+ - 结果是什么
23
+ 7 . 教育经理
24
+ 8 . 个人评价
25
+
26
+ 工作经历、项目经历中尽量避免主观表述,少一点语义词、模糊的形容词,要用语气肯定词,一句话概述成果,一定要将自己的优势和期望明晰地表达出来。
27
+
28
+ 写简历的错误姿势:
29
+
30
+ 1 . 简历打开乱码,排版不整齐
31
+ 2 . 个人信息不完善(还真有不写自己年龄、毕业院校的)
32
+ 3 . 语气描述词太多,不够精简,完全不知所云
33
+ 4 . 软件开发一两年,简历中不要有精通一词
34
+ 5 . 最好不要写培训经历
35
+ 6 . 简历页数太多,最好不好超过 3 页
36
+
37
+ ** 简历千万不要造假,不要造假,不要造假!**
38
+
39
+ - https://github.com/todayqq/resume
40
+
41
+ 这是我的简历,大家可以参考一下。
42
+
43
+ ### 写简历的神器
44
+
45
+ 1 . 模板
46
+
47
+ - https://github.com/geekcompany/ResumeSample
48
+
49
+ 这份模板中包含了 PHP、iOS、Android、Java、前端等等之类的工程师简历模板,写起简历来太轻松,有木有!
50
+
51
+ 2 . 在线工具
52
+
53
+ - http://cv.ftqq.com/?fr=github#
54
+
55
+ 在线直接编写,还可以下载、转换 PDF 文件等等。
56
+
57
+ 如果你不会使用 Markdown 的话,我写了一篇 Markdown 的教程,[ Markdown 写作的神兵利器] ( https://www.jianshu.com/p/9f900104f17c ) ,你可以学习一下,Markdown 是程序员必备技能。
58
+
59
+ ### 扩展阅读
60
+
61
+ - [ 程序员简历应该怎么写?] ( https://www.zhihu.com/question/25002833 )
62
+ - [ 面试时,如何向公司提问?] ( http://www.ruanyifeng.com/blog/2012/08/questions_you_need_to_ask_in_an_interview.html )
Original file line number Diff line number Diff line change
1
+ 随着 IT 培训行业雨后春笋般崛起,码农的入门门槛越来越低,每年都会输出数十万码农,对于互联网整个行业来说,这是一件好事,能促进行业的整体发展,但是对于相关开发的从业者来说,程序员的竞争也越来越大。
2
+
3
+ 并不是每一个人都适合软件开发,首先你要确认是否发自内心的热爱这个领域,而不是纯粹为了「高薪职业」。
4
+
5
+ 或许你并怎么热爱这个行业,或许你只是为了生计,但是进入了这个行业,至少可以为自己打上软件工程师的标签,而不是只会 Hello World、Control+C、Control+V 的 Coder。
6
+
7
+ 就算是面向工资编程,也需要有足够的实力,而程序员该如何精进呢?
8
+
9
+ > 1 . 每天比别人多做一点、多学一点
10
+
11
+ 想必大家都听过卖油翁中的一句话:“无他,但手熟尔。” 想要在编程领域有所突破,1W 小时定律尤为体现,编程需要不断的实践,才有提高。
12
+
13
+ 编程就像打篮球,不管你看再多 NBA 的视频,只有你自己去拍打篮球的时候,才能真正的去融会贯通,每天比同事多做 1 小时,坚持下去,升职加薪不再是夸夸其谈。
14
+
15
+ > 2 . 不断学习、持续积累、坚持复盘
16
+
17
+ IT 行业发展迅速,软件的版本迭代更新也非常快,而每年产生的新技术也越来越多,在这个行业中药持续不断的学习,不断更新自己的操作系统、知识体系。
18
+
19
+ 在公司负责开发完项目之后,就真的完事了吗?从中遇到了那些问题?提出了那些解决方案?掌握了那些新技能?项目复盘、总结不可或缺。
20
+
21
+ > 3 . 坚持写作
22
+
23
+ 说起写文章,是很多理科生的痛,不善言谈,要写作,简直比登天还难。
24
+
25
+ 但是程序员非常有必要养成写作的习惯,编程和写作有很多类似的地方,最为核心的共同之处在于它们都需要清晰思考的能力。很多优秀的软件工程师也是优秀的作家,文章和代码一样富有逻辑性,行文流畅、优雅。
26
+
27
+ 而且写作还可以打造个人 IP,提高个人影响力,其中最典型的就是你的技术博客,就是你的最好的简历。
28
+
29
+ > 4 . Follow the master
30
+
31
+ 你现在的圈子,就决定了你将来的生活状态,也基本决定了你的技术水平,想要有所突破,就要不断的学习技术大牛们的学习方式、学习技巧,站在巨人的肩膀上,你讲看的更远。
32
+
33
+ > 5 . 坚持独立思考
34
+
35
+ 在软件开发流程里面,程序员只是充当一种工具,用来实现产品经理的软件标准,最终输出可交付的代码。
36
+
37
+ 许多年轻的程序员勤奋工作,从早到晚一刻不停地编码,周末也来加班,努力完成公司的一个个目标,很少会去想为什么要开发这个软件?这个软件有多大的价值?更很少去想"我的人生规划是什么"?
38
+
39
+ 即使软件最终开发完毕,公司获得了利润,但是和程序员又能有多大的关联呢?谁最终能记得这个软件是你开发的呢?
40
+
41
+ 你不应该只是像工具一样工作,坚持独立思考,多规划自己的未来。
42
+
43
+ ### PHPer 级别精进之路
44
+
45
+ 最后在简单聊一下 PHPer 的级别,初级、中级、高级、再往上就是架构师。
46
+
47
+ 简单的区分一下,初级就是指刚入门的程序员,此时的编程水平还比较稚嫩,还不足以独立开发项目的能力;
48
+
49
+ 而中级就是指编程已经有了一定的火候,也积累了较多的业务经验,此时已经具备了单独开发较多项目的能力;
50
+
51
+ 而高级的工程师,和中级有很大的区别,技术层面而言,最大的不同的是:中级工程师只是知其然,而不知所已然。很多技术只是会用,而且用的很熟练,但是不清楚其中的原理,在处理一些大流量、高并发的情况下,其中的差距尤为明显。
52
+
53
+ 架构师呢,是一个既需要掌控整体又需要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的人。到了这个职位,就不仅仅只是技术层面了,更多的还有沟通和管理。
54
+
55
+ 不知道你属于哪个级别呢?是否有考虑过又该如何进阶呢?
Original file line number Diff line number Diff line change
1
+ ### 前端篇
2
+
3
+ - [ 收集的前端面试题和答案] ( https://github.com/qiu-deqing/FE-interview )
4
+ - [ 前端开发面试题] ( https://github.com/markyun/My-blog/tree/master/Front-end-Developer-Questions/Questions-and-Answers )
5
+ - [ 史上最全的web前端面试题汇总及答案1] ( https://www.jianshu.com/p/2f7eb1ad7174 )
6
+ - [ 史上最全的web前端面试题汇总及答案2] ( https://www.jianshu.com/p/abadcc84e2a4 )
7
+ - [ 前端工程师手册] ( https://leohxj.gitbooks.io/front-end-database/index.html )
8
+ - [ HTTP协议:工作原理] ( http://blog.csdn.net/anndy_/article/details/77198883 )
9
+
10
+ ### 后端篇
11
+
12
+ - [ 3年PHPer的面试总结] ( http://coffeephp.com/articles/4?utm_source=laravel-china.org )
13
+ - [ 垃圾回收机制] ( http://docs.php.net/manual/zh/features.gc.performance-considerations.php )
14
+ - [ S.O.L.I.D 面向对象设计] ( https://laravel-china.org/articles/4160/solid-object-oriented-design-and-programming-oodoop-notes?order_by=created_at& )
15
+ - [ MySQL索引原理及慢查询优化] ( https://tech.meituan.com/mysql-index.html )
16
+ - [ 分库分表的几种常见形式] ( http://www.infoq.com/cn/articles/key-steps-and-likely-problems-of-split-table )
17
+ - [ 大众点评订单系统分库分表实践] ( https://tech.meituan.com/dianping_order_db_sharding.html )
18
+ - [ SSL/TLS协议运行机制的概述] ( http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html )
19
+ - [ MySQL 死锁问题及解决] ( http://onwise.xyz/2017/04/20/mysql-%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98%E5%8F%8A%E8%A7%A3%E5%86%B3/ )
20
+
21
+ ### Linux、Git 篇
22
+
23
+ - [ linux面试常问命令] ( http://blog.csdn.net/u010842515/article/details/72732106 )
24
+ - [ Linux常见面试题] ( https://www.leolan.top/index.php/posts/36.html )
25
+ - [ Git教程] ( https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 )
26
+ - [ Gitflow 工作流] ( https://laravel-china.org/articles/6318/gitflow-workflow )
27
+
28
+ ### 其他
29
+
30
+ - [ 程序员简历应该怎么写?] ( https://www.zhihu.com/question/25002833 )
31
+ - [ 程序员简历模板] ( https://github.com/geekcompany/ResumeSample )
Original file line number Diff line number Diff line change
1
+ Laravel 作为现在最流行的 PHP 框架,其中的知识较多,所以单独拿出来写一篇。
2
+
3
+ - 简述 Laravel 的生命周期
4
+
5
+ > Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。
6
+ >
7
+ > 1 . 注册类文件自动加载器:Laravel通过composer进行依赖管理,并在bootstrap/autoload.php中注册了Composer Auto Loader (PSR-4),应用中类的命名空间将被映射到类文件实际路径,不再需要开发者手动导入各种类文件,而由自动加载器自行导入。因此,Laravel允许你在应用中定义的类可以自由放置在Composer Auto Loader能自动加载的任何目录下,但大多数时候还是建议放置在app目录下或app的某个子目录下
8
+ >
9
+ > 2 . 创建服务容器:从 bootstrap/app.php 文件中取得 Laravel 应用实例 $app (服务容器)
10
+ >
11
+ > 3 . 创建 HTTP / Console 内核:传入的请求会被发送给 HTTP 内核或者 console 内核进行处理,HTTP 内核继承自 Illuminate\Foundation\Http\Kernel 类。它定义了一个 bootstrappers 数组,数组中的类在请求真正执行前进行前置执行,这些引导程序配置了错误处理,日志记录,检测应用程序环境,以及其他在请求被处理前需要完成的工作;HTTP 内核同时定义了一个 HTTP 中间件列表,所有的请求必须在处理前通过这些中间件处理 HTTP session 的读写,判断应用是否在维护模式, 验证 CSRF token 等等
12
+ >
13
+ > 4 . 载入服务提供者至容器:在内核引导启动的过程中最重要的动作之一就是载入服务提供者到你的应用,服务提供者负责引导启动框架的全部各种组件,例如数据库、队列、验证器以及路由组件。因为这些组件引导和配置了框架的各种功能,所以服务提供者是整个 Laravel 启动过程中最为重要的部分,所有的服务提供者都配置在 config/app.php 文件中的 providers 数组中。首先,所有提供者的 register 方法会被调用;一旦所有提供者注册完成,接下来,boot 方法将会被调用
14
+ >
15
+ > 5 . 分发请求:一旦应用完成引导和所有服务提供者都注册完成,Request 将会移交给路由进行分发。路由将分发请求给一个路由或控制器,同时运行路由指定的中间件
16
+
17
+ - 服务提供者是什么?
18
+
19
+ > 服务提供者是所有 Laravel 应用程序引导启动的中心, Laravel 的核心服务器、注册服务容器绑定、事件监听、中间件、路由注册以及我们的应用程序都是由服务提供者引导启动的。
20
+
21
+ - IoC 容器是什么?
22
+
23
+ > IoC(Inversion of Control)译为 「控制反转」,也被叫做「依赖注入」(DI)。什么是「控制反转」?对象 A 功能依赖于对象 B,但是控制权由对象 A 来控制,控制权被颠倒,所以叫做「控制反转」,而「依赖注入」是实现 IoC 的方法,就是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。
24
+ >
25
+ > 其作用简单来讲就是利用依赖关系注入的方式,把复杂的应用程序分解为互相合作的对象,从而降低解决问题的复杂度,实现应用程序代码的低耦合、高扩展。
26
+ >
27
+ > Laravel 中的服务容器是用于管理类的依赖和执行依赖注入的工具。
28
+
29
+ - Facades 是什么?
30
+
31
+ > Facades(一种设计模式,通常翻译为外观模式)提供了一个"static"(静态)接口去访问注册到 IoC 容器中的类。提供了简单、易记的语法,而无需记住必须手动注入或配置的长长的类名。此外,由于对 PHP 动态方法的独特用法,也使测试起来非常容易。
32
+
33
+ - Contract 是什么?
34
+
35
+ > Contract(契约)是 laravel 定义框架提供的核心服务的接口。Contract 和 Facades 并没有本质意义上的区别,其作用就是使接口低耦合、更简单。
36
+
37
+
38
+ - 依赖注入的原理?
39
+
40
+ > 这个不解释,这是理解 IoC 容器的前提。
41
+
42
+ - 谈谈 Laravel 和 YII 框架的区别
43
+
44
+ > 1 . 在 YII 框架中的路由是通过书写 Controller、Action 间接定义路由,而 Laravel 中是在 route 路由文件中直接定义路由入口
45
+ > 2 . Laravel 提供 ORM 对象关系映射,使读写数据库的操作更加简单
46
+ > 3 . Laravel 提供更多的 Artisan 命令和脚手架开发
47
+ > 4 . Laravel 的 composer 扩展包比 Yii 框架更多,使开发更加高效
Original file line number Diff line number Diff line change
1
+ ### Linux
2
+
3
+ - 说一些常用的 Linux shell 命令
4
+
5
+ > 这个问题就不回答了,自由发挥
6
+
7
+ - Linux 硬链接和软链接有什么区别?
8
+
9
+ > 1 . 硬链接不可以跨分区,软件链可以跨分区
10
+ > 2 . 硬链接指向一个i节点,而软链接则是创建一个新的i节点
11
+ > 3 . 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除
12
+
13
+ - 建立软链接(快捷方式),以及硬链接的命令。
14
+
15
+ > 软链接: ln -s slink source
16
+ > 硬链接: ln link source
17
+
18
+ - 怎么利用 ps 查看指定进程的信息
19
+
20
+ > ps -ef | grep pid
21
+
22
+ - Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
23
+
24
+ > “?” 可替代单个字符。
25
+ > “* ” 可替代任意多个字符。
26
+ > 中括号“[ charset] ”可替代 charset 集中的任何单个字符,如[ a-z] ,[ abABC]
27
+
28
+ ### Git
29
+
30
+ - Push 代码时发生突破如何处理?
31
+
32
+ > 1、使用 git stash 将本地文件暂存
33
+ >
34
+ > 2、更新代码 git pull
35
+ >
36
+ > 3、还原暂存的内容 git stash pop
37
+
38
+ - 线上服务器代码出了问题如何回滚?
39
+
40
+ > git reset --hard HEAD^
41
+
42
+ - GitFlow 中都有那些分支?
43
+
44
+ > 两个长期维护分支
45
+ >
46
+ > - 主分支(master)
47
+ > - 开发分支 (develop)
48
+ >
49
+ > 三种短期分支
50
+ >
51
+ > - 功能分支(feature branch)
52
+ > - 补丁分支(hotfix branch)
53
+ > - 预发分支(release branch)
Original file line number Diff line number Diff line change
1
+ - 什么是索引,作用是什么?常见索引类型有那些?Mysql 建立索引的原则?
2
+
3
+ > 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针,相当于书本的目录。其作用就是加快数据的检索效率。常见索引类型有主键、唯一索引、复合索引、全文索引。
4
+ >
5
+ > - 索引创建的原则
6
+ > - 最左前缀原理
7
+ > - 选择区分度高的列作为索引
8
+ > - 尽量的扩展索引,不要新建索引
9
+
10
+ - SQL 语句的优化原则?
11
+
12
+ > 1 . 避免使用 Like 模糊查询
13
+ > 2 . 只列出需要查询的字段,而不是所有
14
+ > 3 . 避免使用 MySQL 函数,尽量让 MySQL 做更少的事情,减轻 MySQL 的压力
15
+ > 4 . 经常查询的字段,创建合适的索引,提高查询效率
16
+
17
+ - 什么是 MySQL 慢查询?又该如何优化?
18
+
19
+ > MySQL 中查询超过指定时间的语句,被称之为「慢查询」。该如何优化呢?优化 SQL 语句,创建合适的索引,如以上两个问题。
20
+
21
+ - MySQL 分库分表怎么设计
22
+
23
+ > 1 . 垂直分表
24
+ >
25
+ > 垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,某个表中的字段比较多,可以新建立一张“扩展表”,将不经常使用或者长度较大的字段,拆分出去放到“扩展表”中。
26
+ >
27
+ > 2 . 垂直分库
28
+ >
29
+ > 基本的思路就是按照业务模块来划分出不同的数据库,而不是像早期一样将所有的数据表都放到同一个数据库中。
30
+ >
31
+ > 3 . 水平分表
32
+ >
33
+ > 水平分表也称为横向分表,比较容易理解,就是将表中不同的数据行按照一定规律分布到不同的数据库表中(这些表保存在同一个数据库中),这样来降低单表数据量,优化查询性能。
34
+ >
35
+ > 4 . 水平分库分表
36
+ >
37
+ > 水平分库分表与上面讲到的水平分表的思想相同,唯一不同的就是将这些拆分出来的表保存在不同的数据库中。
38
+
39
+ - 什么是 MySQL 死锁?如何有效降低死锁?
40
+
41
+ > 死锁:死锁一般是事务相互等待对方资源,最后形成环路,而无法继续运行。
42
+ >
43
+ > 产生死锁的原因:
44
+ >
45
+ > 1 . 系统资源不足;
46
+ > 2 . 进程运行推进的顺序不合适;
47
+ > 3 . 资源分配不当等;
48
+ >
49
+ > 如何有效降低死锁:
50
+ >
51
+ > 1 . 按同一顺序访问资源;
52
+ > 2 . 避免事务中的用户交互;
53
+ > 3 . 保持事务简短并在一个批处理中;
54
+ > 4 . 使用低隔离级别;
55
+ > 5 . 使用绑定连接;
56
+ >
57
+ >
You can’t perform that action at this time.
0 commit comments