自学 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 了。
谢谢大家!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.