以前的雇主,是3-4万人大厂,最核心业务有一个核心大数据系统python写的:
- 1.使用各类数据库实时维护的人类最完整某类型文件库,含数亿文档的数十亿文档版本
- 2.各类传统的分析工具、估价、OCR了的文档的错误估算等等等
- 3.各类查询、搜索、阅读、手工分组分类、标注工具等等等
- 4.机器学习的文档分类,全套自己做的,算法部分C++写的,别的都是Python
- 5.对接各类通用或自研大数据分析的接口,对接公司别的平台的各类接口
- 6.各类爬虫,爬整个互联网,在互联网上找出所有相关的信息,匹配起来
我全程参与,负责1/4/5/6部分,最保守计算,全套50万行python这个量级肯定有的
做了好几年,离职回国,第一次听说python不适合写大项目。当然,也有可能各位口中的大项目都是那种好几百万行上千万行的,那种我倒真没有经验。
不必说python怎么怎么好,它问题很多,比如:
- 1.慢,真的很慢
- 2.因为慢,很多时候得花时间去做其它语言看起来无谓的“优化”
- 3.GIL这种几十年不变的东西,让人对Python社区是否有诚意改进表示怀疑
- 4.Unicode支持烂
- 5.Python2/3的分裂是教科书级别的悲剧
- 6.部署起来各种奇葩
但这不改变python写起来飞快、生态完备、在技术够的情况下可折腾的东西特别多等等优点。现在我用Golang最多,回想上面项目部分比如第六项爬虫相关那个,当时用Python做,从头到底几个人一个月时间就上线,我不认为Golang可以这么快。第一版上线一个月完成的东西包括:
- 1ec2上spot instance一个独立的竞价库,在规定的时限、预算目标、爬虫性能预估模型基础上,可以尽力去拍卖竞购所需要的计算资源提供平台。
- 2爬整个alexa ranking前100万排名的网站的头几层页面,根据其内容选择数万和我们所需要信息相关的网站,把它们全站爬一次。初次爬,要求24小时内出结果。
- 3一个自己设计的web mining组合算法,从上述爬回来的几个T的数据里挖出我们有价值的某类产品信息。注意,数万网站、数百万网页格式,直接regex/xpath都是完全没有用的。数万网站涉及M个国家、N种语言。
- 4数据清洗,给出一个自动估算的准确度预测
- 5和内部一个百万级数据的产品数据库整合,把上述爬回来处理好的数据做成一个“网上如此描述本产品”的功能,展示一段机器通过上述挖掘处理以后的数据的综述。
- 6和内部一个百万级数据的产品数据库整合,把上述爬回来处理好的数据中出现的却无法匹配到我方内部数据的产品做置信评估,选出数万高置信的,供人工分析、排查并最终。
- 7每天增量更新上述各项。
语言永远不核心,工具永远不关键,只有人是关键。
国内互联网圈子最关键的问题是水平不高,人却自大了。知乎上无意义的讨论某个语言好、某个语言不好,似乎特别起劲。反正cool的东西99%的团队做不出那是肯定的,反正可以来怪语言、怪系统、怪体制,总之都是别人的错,写代码的小白最正确!
我的发言的核心思想就一条:国内互联网圈子这种从来没有成功设计推广过任何一种语言的总体上公认技术落后的团体,成天从python怼到golang,只是在反复给明眼人解释为什么国内技术落后。各主流语言的编译器、runtime、标准库等等都开源了,空谈真的误事,你觉得哪个语言哪个方面不好,请拿出你的解决方案和实现来说话,哪怕你的pull request被否决掉了,请给出详情,大家就事论事看解决方案。还请键盘侠们回归技术人员的淳朴本质,吹骗混蒙的方式开口闭口某个语言怎么怎么有问题,真的很low很丢脸。
很多年轻新入行的朋友的留言让我感觉他们其实是现在行业浮躁氛围的受害者。我没有能力说去一一帮助他们,但愿意提供一些CS PhD毕业全职写代码很多年的过来人的意见:
- 1.语言是有好坏,肯定要有所选择,但除非你是做编译器、标准库等直接语言方向的,过度关注语言就是本末倒置。
- 2.最容易走弯路形成这种本末倒置的原因就是没有自己一个感兴趣且擅长的CS领域。数据库、大数据、分布式、人工智能、机器学习、图形学、UI、操作系统、高性能、安全、理论计算等等等等领域,不去好好选几个自己喜欢的然后持续投入,过度关注语言这种工具,自己亏太大了。
- 3.当你身边有人并非从事语言直接相关的工作,但开口闭口就是这个流行的语言有这样那样毛病,那个小众语言多优美高效,千万要看清楚,此人不是已经走了上述弯路,就是靠谈语言来吹、蒙、混、骗。
- 4.语言不是一个可以长久获得回报的东西。C++在15年前很热,Java/C#在10年前很热,Python热了几年了,Golang这几年开始热了。但你真的只能年轻一次,投入在语言上不值得,成天在网上和人吹Python多烂Golang多差,其实最对不起自己。
- 而且,好不好,适不适合自己,不同的人一定会有不同的答案,正如禅家所言:“如人饮水,冷暖自知。”
总结出了一些Python视频资料和互联网公司Python程序员面试涉及到的绝大部分面试题和答案做成了文档分享给大家,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。