[求职] (广州/深圳) Python Web 开发 __ 英语专业转行 __ 8k

2016-08-18 22:41:17 +08:00
 gulu

[求职] (广州 /深圳) Python Web 开发

一、我的信息

1. 个人简介

自学 Python Web ,熟悉 Flask 和 Tornado , 熟悉 MVT , 遵循良好的代码命名规范;   
自我驱动, 善于独立解决问题, 乐于分享, 执着, 坚韧,遇山开山, 遇河架桥。

2. 个人项目

2.1 Tornado 微博 /twitter 聚合

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 实现的多层级分类,理论上读取子分类数据更快。  

3. 学历和工作经历

1. 学历: 2014 年本科毕业(985), 专业英语;  

2. 工作: 毕业后苏宁易购电商运营。  

4. 其它技能点

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 了。
谢谢大家!

5589 次点击
所在节点    求职
68 条回复
Yc1992
2016-08-19 22:29:58 +08:00
@gulu 楼主的故事告诉我们,学写代码,英语非常重要。

英语不好的人,只能守着没人更新的 2 , 3 年前的过期文档撸。
neosfung
2016-08-19 22:56:33 +08:00
楼主很有诚意啊,不过还需要多点学习算法和数据结构的东西。因为面试总有可能考到算法和数据结构,你非科班出生的可能会吃亏
gulu
2016-08-20 00:20:32 +08:00
@cxyfreedom
嗯我觉得从企业的角度来看还是很好理解的,然后可能这边现在招人的少(自我安慰满分😂)

@mayokaze
谢谢你的关注,我现在也在看上海的机会了。你那里有合适的萝卜坑吗~

@fytriht
额,大学接触的 Java ,也就是看懂语句的水平,一句 Hello World 让我大半夜兴奋了不得了,后来自学了 JavaScript 做轮播图什么的。 毕业后学 Python 写写爬虫,今年三月份明确在 web 后台发展。

时间的话不固定,开始的时候每天强迫自己多少小时很疲惫。后来是只要每天完成目标有进步我就很满足了,就允许自己放纵~不过有时候遇到难过的坎一不留神就通宵了,吃饭都嫌麻烦……
hbkdsm
2016-08-20 00:38:07 +08:00
我觉得你值 12K
gulu
2016-08-20 00:38:15 +08:00
@cgcs
对啊,你这个总结就是我一直想总结又不知道怎么表达的。
其实在预期的学习路径中是安排了算法的,就是觉得做起来很难找到成就感,所以在 checkio 和 leetcode 做了一些简单的算法题。
我计划是在今年内补充 SICP, CSAPP, CLRS ,到时候又免不了在 v 站叨扰大家了。

@Yc1992
英语确实帮了大忙的,所有学习材料和大部分问题都是在英语中处理的,那么多人无私贡献自己的精力和时间来做开源、写文档和回答问题,让我感觉程序员是新时期最具有力量和善意的群体(发病了快吃药)。
不过英语的重要性不用拿我做例子啊,我在 SO 发现了好多国内大牛的影子,英语简直是 native speaker 的水准了。程序员的英语其实都不赖的
gulu
2016-08-20 00:43:16 +08:00
@neosfung
是的,我会往这方面加油,谢谢你的鼓励!

@hbkdsm
额不知道大家是调侃还是怎么,总之希望大家不要说薪水了,如果说自学几个月就能达到这个薪水的话,那这个世界也太投机取巧了,不过还是谢谢你对我的肯定😁
gulu
2016-08-20 00:47:25 +08:00
@hbkdsm
额不过你既然这么说了,请问你那里有没有合适的职位推荐啊~
mayokaze
2016-08-20 01:00:18 +08:00
@gulu 有的, python tornado 的团队,下周一会有人联系你的。另外提点小建议 SICP 和 CLRS 虽然都很好但是作为对应领域的第一本书是不一定合适的, SCIP 建议计算理论( theory of computing )方面的书作为前置补充, CLRS 则建议先学好高德纳的具体数学,有了这些基础你看这两本书得到的理解会是完全不一样的。
liufuseng
2016-08-20 02:23:49 +08:00
lz 厉害啊,现在这水平应该要 10k 以上了吧
hbkdsm
2016-08-20 08:35:07 +08:00
@gulu 想来北京,愿意写 Ruby 的话可以联系我

我也是自学转行的,跨度比你还大
gulu
2016-08-20 09:53:41 +08:00
@mayokaze
谢谢你啊!
记得 checkio 大本营里面最后一道题似乎是最短路径的,当时直接翻算法导论去看很蒙。
嗯我打算根据你说的基础方向再补充一下书单。

@hbkdsm
谢谢你的肯定!我愿意写 Ruby 啊,不过在北京待过一段时间,对那里好像不太适应。
原来你是转行的前辈,又被鼓舞了😎
gulu
2016-08-20 09:59:22 +08:00
@mayokaze
好难遇到用 Tornado 的公司,我面试的公司大部分主力都是 Django ,我得好好准备一下,别漏了这个机会😁
sammiriam
2016-08-20 11:17:23 +08:00
lz 是干大事的,对此我只能这样评价了
Angwang1
2016-08-20 14:16:43 +08:00
考虑来上海吗?
keikeizhang
2016-08-20 15:33:12 +08:00
考虑来北京吗?
wuyu1998
2016-08-20 17:05:11 +08:00
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
gulu
2016-08-20 17:19:04 +08:00
@sammiriam
……😂

@Angwang1
你好,这是面试邀请的意思吗~上海有机会当然可以啊,你有合适的岗位介绍吗😀

@keikeizhang
你好,我对北京可能不太适应,还是更偏向广深和上海的工作机会(说得好像有得挑一样)
不过还是要谢谢你的关注~
rockzhou8
2016-08-21 10:17:26 +08:00
这不正是萧大的那个 Python+Flask 学习路径还成功的实例嘛!
厉害!膜拜!
gulu
2016-08-21 12:06:08 +08:00
@rockzhou8
是的啊我也是看了萧大和别人的成功事迹才下决心的,不然我现在可能是一个英语游戏编辑(现在不是编辑是待业游民了😂)

不过萧大的路线我还没有彻底执行, Flask 源码只看了
gulu
2016-08-21 12:12:19 +08:00
@rockzhou8
Flask 源码只看了 0.1 的一部分然后就横向去看了。
而且我暂时还没有找到工作,谢谢你的鼓励~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX