自学 Python Web ,熟悉 Flask 和 Tornado , 熟悉 MVT , 遵循良好的代码命名规范;
自我驱动, 善于独立解决问题, 乐于分享, 执着, 坚韧,遇山开山, 遇河架桥。
1. 异步处理
- 基本的 Request Handler 、对 微博 /twitter 的 api 资源调用以及 redis session 都是异步的;
- 对外发出的 api 请求基于 CurlAsyncHTTPClient , 支持 socks5 代理, 使用了异步 DNS 解析。
2. Redis Session 以及 Cache
- session 和 cache 基于 tornadis 这个异步 redis 驱动, session 默认 TTL 是 1 天;
- cache 自动将最新的动态消息缓存 3 分钟, 避免短时间内的大量重复请求。
3. Oauth1 和 Oauth2
- weibo 使用的 oauth2 接口, twitter 使用的 oauth1 接口, requests_oauth 生成 'Authorization'。
4. 整体结构
- 前端 jQuery + Bootstrap , ajax 触发后端请求 api 资源, 再返回 json 数据, 使用 jQuery 渲染;
- 后端代码结构学习了 MVT 模式, 使用了 SQLAlchemy ORM ,使用了 Nginx 前端。
2.2 Flask 博客
1. 博客和 Todo
- 博客: Markdown 、草稿、多标签、多层级分类、 google-analytics 、 disqus 、 sitemap ;
- Todo :优先级、子任务、自由添加 Markdown 格式的笔记、触摸滑动排;
- 博客的数据库 Model 有 90% 覆盖率的单元测试。
2. SQLAlchemy
- 通过 model class 的 @property 和 SQLAlchemy 的 event_listener 约束数据关系;
- 使用 Material Path 实现的多层级分类,理论上读取子分类数据更快。
1. 学历: 2014 年本科毕业(985), 专业英语;
2. 工作: 毕业后苏宁易购电商运营。
1. Git 协作、 jQuery + Bootstrap 、 基本 Linux 服务器部署
2. 英语专业八级、 BEC 商务英语高级、 Stackoverflow + Google
1. 公司文化
希望是一家技术驱动的公司。
希望是不加班的公司,我觉得自学就是生产力。
2. 工作内容
希望是 Python 后端, 也可以往数据爬虫方向努力。
3. 工作地点
广州和深圳。
4. 期望薪资
希望能有正规的五险一金。
试用期 6k ,转正后如果是 965 是 8k ,请您不要还价了...
1. 三月底按 *Flask Web Development by Miguel Grinberg* 这本书学习 Flask ;
2. 四月五月自己写了 Flask 博客,并且部署上线,目前自己在用;
3. 六月补充背景知识,做了一点算法题,了解 TCP/IP 四层协议这些;
4. 七月份学习 Oauth API , Tornado 以及异步和 Python 协程相关,做出 Twiwei ;
5. 八月份找工作, 8 月初入职在一家大牛的公司,由于个人发展方向和公司培养的方向不太吻合,
和大牛沟通确认没有转岗机会后离职(并且得到大牛的一个内推面试,目前在等面试消息)。
1. 为什么离开现在的工作?
喜欢编程。之前在苏宁易购做电商运营,之后自学 python web ,现在在找 python 后端工作。
2. 除了 python 及 python 的框架,最擅长的三种语言或技术依次是?
javascript, java 能看懂语法
3. 最满意和最不满意的任务 /项目,为什么?
我的一个个人项目: http://twiwei.com
从技术上比较满意:使用 Tornado , 折腾了异步, 顺带撸了一下 oauth, redis, 缓存,
session, cookie 相关的技能点。
从产品角度不满意: weibo 方面无法备案,微博 和 twitter 在 api 接口上各有手法和限制,
导致很多功能没有优雅的实现。
4. 举一个实际的例子,为什么要用 python 装饰器?有哪些优点?
web 开发中的权限验证,比如 @login_reqired, @admin_required
优点: 易读, 低冗余易维护, 热插拔
5. 对于计算密集型和 IO 密集型任务分别应该怎么处理?为什么这样处理?
计算密集型:多进程利用多核资源;
IO 密集型: 多线程或者异步, 线程切换仍然有开销, IO 异步基于 IO 事件驱动,
可以充分发挥单个 CPU 的能力。
对我个人来说,多进程用得不多,多线程在爬虫中用得比较多,异步在我的 twiwei 中用得很多,
是目前感兴趣的点。
6. 举一个用到 cache 的例子?怎么决定哪些需要放到 cache 里,哪些用一般的数据库?
在我的 twiwei 中,为了避免用户短时间内大量请求 api 导致超出 twiwei/ 微博的请求限额,
我把用户的第一次请求结果存在 redis 中缓存 3 分钟, 3 分钟后再次请求才会向 twitter 和
微博请求新的资源。
一般来说出于性能考虑,读请求频繁,不需要立马写入的数据,可以放到 cache 中。
技术限制有时也是考虑因素,比如在没有合适的异步数据库驱动的适合,使用异步的 redis 驱动
可以避免数据库读写阻塞服务器。
7. 在并发和实时性上,你现在的技术瓶颈是什么?对于对战类游戏,用什么特别的办法保证游戏后台的实时性?
并发用异步 IO 解决, 我对这个问题特别感兴趣,所以在 Django 和 Tornado 之间选择了后者;
实时用 websocket , websocket 这一块我还没有实践,是我的短板,但它正躺在我的折腾目标列表上。
8. 若后台有时需要调用耗时很长的算法(如几秒),服务器如何布局?
抱歉,对这一块的业务场景没有接触过。
但是既然是一段计算密集型的任务,那么我的思路是放到其它的线程中去。
以上部分来自 https://www.v2ex.com/t/297926
=======================================================================
9. 数据库怎么设计表来存储树结构的数据?
最常见的 ForeignKey , 优点是写入和改动快,缺点是查找慢;
此外还有 Material Path , 优点是查找快,写入和改动慢;
最后还有 Node List , 优点是读写快,缺点是需要预先设计好 Nodes , 拓展性不好。
10. 你的计算机基础怎么样? 算法呢?
计算机背景确实很薄弱,算法目前也没有投入多大精力。
但这个事关我的个人前途,所以我必须补充这方面的知识。
11. git 协作的流程是怎么样的?
比如有 product , test 和 develop 三个分支。
开发时都在 develop 。
我要修改或者新增一些功能。
先设置 git push 时默认推送当前分支。
git branch // 确保在 develop 分之
git checkout -b develop-hwq/new-feature // hwq 是我的名字
修改代码
git push
然后再在 gitlab 发起 merge 请求, merge 到 develop 分之。
等待审核代码。
以上都是从潘大教的, git 还有很多强大的功能,我学得还不完全。
还有一些 Python 基础题没有列出来。
Flask 博客: http://imhuwq.com
Twiwei: http://twiwei.com
github: https://github.com/imhuwq
imhuwq#gmail.com
PDF 简历下载或预览
非常希望我能符合您的工作需求。
也很期待您的联系,不管是建议,还是发来面试题或者面试邀请。
=================================================
另外,根据我观察到的 v 站传统,在 v 站放上自己的站点,如果被 v 友攻击,那算是一个荣耀,也算是个人站点的成人礼。
但是这回请各位大哥大姐放小弟一码,起码等我拿到 offer 了。
谢谢大家!
1
Victor215 2016-08-18 22:57:40 +08:00
我觉得你这个已经不是简历的架势了,是要当大哥啊~
我感觉用 python 开发的公司本就不多, flask 作为主力的更少 |
4
fzinfz 2016-08-19 00:43:35 +08:00
感觉公开期望工资不好,万一有人看上 lz 想给 10k+,那是给 10+还是 8 呢
|
5
xiaoshangmin 2016-08-19 00:49:56 +08:00 via iPhone
深圳还是找得到工作的
|
6
IwfWcf 2016-08-19 01:10:50 +08:00
看简历感觉 8k 要得低了吧……
|
7
187j3x1 2016-08-19 01:15:27 +08:00
同为自学道友 支持一下
|
8
echo111222 2016-08-19 01:17:05 +08:00 via Android
吓的我忍不住爬起来看书了… 估计楼主至少 10k
|
9
wellsc 2016-08-19 02:27:41 +08:00 via Android
别去酷狗…
|
10
Tuibimba 2016-08-19 03:49:53 +08:00 via iPhone
这简历质量起码一万啊
|
11
busyluo 2016-08-19 06:34:05 +08:00 via iPhone
难道专八也不够在 git commit 使用英文吗
|
12
gulu OP |
13
gulu OP @xiaoshangmin
您好,请问你那里有合适的岗位需求吗?谢谢你~ |
15
gulu OP @echo111222
你好,是什么书能分享一下吗😀 |
16
gulu OP |
17
xiaoshangmin 2016-08-19 09:14:57 +08:00
@gulu 木有招 python 的
|
18
dtfm 2016-08-19 10:07:52 +08:00
去这位道友 flask 搭的博客溜了一圈,很有诚意啊。
|
19
gulu OP |
20
zchzch1014 2016-08-19 11:22:53 +08:00
|
21
gulu OP |
22
exoticknight 2016-08-19 11:36:53 +08:00
lz 冷静,虽然很多人在说厉害厉害,但是从其他内容的描述上看,其实就是 python web 基本内容,所以我觉得 lz 还是要继续学习一个,深入研究某个点
|
23
gulu OP |
24
Yc1992 2016-08-19 12:47:03 +08:00 via Android
专八!
|
25
wongskay 2016-08-19 12:49:31 +08:00
我觉得这种可以去外企,虽然不是计算机专业的,但是自学经历还是值得我参考的,希望你加油。
|
26
woostundy 2016-08-19 12:51:14 +08:00
这简历值 12K
|
27
gulu OP |
28
fish2016 2016-08-19 13:39:20 +08:00 via iPhone
楼主加油,我有一个学体育的同学自学前端半年毕业去了杭州工作,和楼主一样,也是出于兴趣,非常努力的一个人。 ps :这个薪水在广州深圳应该是比较低了.. 今年应届路过
|
29
lcc4376 2016-08-19 13:54:33 +08:00
8k 你會拉低我們 pythoner 的行情,至少 10k 吧,,,,.
|
30
gulu OP |
31
dtfm 2016-08-19 14:45:51 +08:00
@gulu 并没有那么厉害啦,我也是 Python 菜鸟一只,一起成长嘛。我也觉得不止 8K ,不是因为你的技能树,而是看了你的博客后,你的学习方式和态度是我在 V2 见过转行者中最为优秀的。
|
32
gulu OP |
33
fyooo 2016-08-19 15:49:50 +08:00
赞!
不过楼主可以把 cv 的照片删掉,一般技术岗位的 cv 放照片会减分的。 |
34
cxyfreedom 2016-08-19 18:20:54 +08:00 via iPhone
和我年纪一样 我也刚找了个 python 的岗位 lz 加油哟
|
35
gulu OP |
36
gulu OP @cxyfreedom 关注了你,向你取经😁
|
37
cxyfreedom 2016-08-19 21:22:47 +08:00 via iPhone
@gulu 我觉得你这个简历找个 10k 的基本没什么问题的 看得出你自我驱动能力很强 应该没太大问题的 就是奇怪为什么这帖子里面没有给你提供岗位的……
|
38
mayokaze 2016-08-19 21:56:57 +08:00
楼主愿意来上海吗?
|
39
fytriht 2016-08-19 21:57:58 +08:00
请问楼主自学之前有编程经验吗?每天学习几小时?
|
40
cgcs 2016-08-19 22:21:18 +08:00
转行不易
功能性的东西折腾了一些,基础的东西撸得太少 继续加油! |
42
neosfung 2016-08-19 22:56:33 +08:00
楼主很有诚意啊,不过还需要多点学习算法和数据结构的东西。因为面试总有可能考到算法和数据结构,你非科班出生的可能会吃亏
|
43
gulu OP @cxyfreedom
嗯我觉得从企业的角度来看还是很好理解的,然后可能这边现在招人的少(自我安慰满分😂) @mayokaze 谢谢你的关注,我现在也在看上海的机会了。你那里有合适的萝卜坑吗~ @fytriht 额,大学接触的 Java ,也就是看懂语句的水平,一句 Hello World 让我大半夜兴奋了不得了,后来自学了 JavaScript 做轮播图什么的。 毕业后学 Python 写写爬虫,今年三月份明确在 web 后台发展。 时间的话不固定,开始的时候每天强迫自己多少小时很疲惫。后来是只要每天完成目标有进步我就很满足了,就允许自己放纵~不过有时候遇到难过的坎一不留神就通宵了,吃饭都嫌麻烦…… |
44
hbkdsm 2016-08-20 00:38:07 +08:00
我觉得你值 12K
|
45
gulu OP @cgcs
对啊,你这个总结就是我一直想总结又不知道怎么表达的。 其实在预期的学习路径中是安排了算法的,就是觉得做起来很难找到成就感,所以在 checkio 和 leetcode 做了一些简单的算法题。 我计划是在今年内补充 SICP, CSAPP, CLRS ,到时候又免不了在 v 站叨扰大家了。 @Yc1992 英语确实帮了大忙的,所有学习材料和大部分问题都是在英语中处理的,那么多人无私贡献自己的精力和时间来做开源、写文档和回答问题,让我感觉程序员是新时期最具有力量和善意的群体(发病了快吃药)。 不过英语的重要性不用拿我做例子啊,我在 SO 发现了好多国内大牛的影子,英语简直是 native speaker 的水准了。程序员的英语其实都不赖的 |
46
gulu OP |
48
mayokaze 2016-08-20 01:00:18 +08:00 1
@gulu 有的, python tornado 的团队,下周一会有人联系你的。另外提点小建议 SICP 和 CLRS 虽然都很好但是作为对应领域的第一本书是不一定合适的, SCIP 建议计算理论( theory of computing )方面的书作为前置补充, CLRS 则建议先学好高德纳的具体数学,有了这些基础你看这两本书得到的理解会是完全不一样的。
|
49
liufuseng 2016-08-20 02:23:49 +08:00 via Android
lz 厉害啊,现在这水平应该要 10k 以上了吧
|
51
gulu OP |
52
gulu OP @mayokaze
好难遇到用 Tornado 的公司,我面试的公司大部分主力都是 Django ,我得好好准备一下,别漏了这个机会😁 |
53
sammiriam 2016-08-20 11:17:23 +08:00
lz 是干大事的,对此我只能这样评价了
|
54
Angwang1 2016-08-20 14:16:43 +08:00 via iPhone
考虑来上海吗?
|
55
keikeizhang 2016-08-20 15:33:12 +08:00
考虑来北京吗?
|
56
wuyu1998 2016-08-20 17:05:11 +08:00 1
5. 对于计算密集型和 IO 密集型任务分别应该怎么处理?为什么这样处理?
多进程[系统级]、多线程[系统级]、协程[用户级线程] 计算密集型: 多进程。 cpu 忙, io 闲 IO 密集型: 多线程、协程。 cpu 闲, io 忙 上下文切换代价: 协程 < 线程 < 进程 CPython 因为 GIT[全局解释器锁]的原因,多线程、协程只能在单 cpu 内运行。 9. 数据库怎么设计表来存储树结构的数据? http://www.ibase.ru/files/articles/programming/dbmstrees/sqltrees.html 1) 邻接表 CREATE TABLE Personnel ( emp CHAR(10) NOT NULL PRIMARY KEY, boss CHAR(10) DEFAULT NULL REFERENCES Personnel(emp), salary DECIMAL(6,2) NOT NULL DEFAULT 100.00 ); 2) 嵌套 CREATE TABLE Personnel ( emp CHAR(10) NOT NULL PRIMARY KEY, lft INTEGER NOT NULL UNIQUE CHECK (lft > 0), rgt INTEGER NOT NULL UNIQUE CHECK (rgt > 1), CONSTRAINT order_okay CHECK (lft < rgt) ); 例子: django-mptt https://github.com/django-mptt/django-mptt |
57
gulu OP @sammiriam
……😂 @Angwang1 你好,这是面试邀请的意思吗~上海有机会当然可以啊,你有合适的岗位介绍吗😀 @keikeizhang 你好,我对北京可能不太适应,还是更偏向广深和上海的工作机会(说得好像有得挑一样) 不过还是要谢谢你的关注~ |
58
rockzhou8 2016-08-21 10:17:26 +08:00
这不正是萧大的那个 Python+Flask 学习路径还成功的实例嘛!
厉害!膜拜! |
59
gulu OP |
60
gulu OP |
62
WingSin 2016-08-23 13:55:51 +08:00 1
简历下载不了哦。
方便发一个完整简历到邮箱吗? [email protected] |
63
Angwang1 2016-08-25 11:21:27 +08:00 via iPhone 1
你好,简历下载不了哦!方便的话可以把简历发送到 [email protected]
|
64
gulu OP |
66
Hieast 2016-09-06 11:00:36 +08:00
咱俩决定转行的时间一样哎。
我发现其实还是先学技术比较容易找工作, SICP , CSAPP 等看了对于找初级岗位的工作并没有什么卵用。虽然基础学好再学技术还是比较爽的。 前两天刚有人推荐我 https://book.douban.com/subject/26702568/这本书,如果你没有看过其他数据结构和算法的教材的话,这本还是比较适合你的。 |
67
cocoakekeyu 2016-09-27 14:38:32 +08:00 via Android
一定要找 python 后端?之前的公司培养什么方向的让你这么快就辞职呀
|
68
Mandown 2017-01-10 01:41:04 +08:00
想知道楼主最后怎么样了
|