程序员人生 网站导航

在腾讯实习的那段日子:不要在难受的时候选择 '逃避/离开'

栏目:综合技术时间:2015-01-15 08:43:23
时间过得很快,从2014.6.5入职实习到2015.1.5已是7个月的时间了,在这边还是学到了很多东西,遇到的人大多数比较nice。中间拿到了留任offer,本来也是想来深圳,也就没有再去找工作。实习进程做了很多事,也遇到1些坑,犯过几个小毛病。此篇不会记录流水账,也不会写技术细节,关于生活经历可能会在空间写写吧,在这里就是做些总结,和摸索以后要走的路。

工作、为人处事、心态篇
1. 尽可能用低权限用户操作,特别是触及数据库表的删除和目录文件的删除,需要特别谨慎!

2. 触及组外的工作,如果不是立马能弄定的,尽可能拉上组长,让leader知道你在做甚么。

3. 工作时间尽可能不要上qq! 午间和晚间休息时间可以查看下消息

4. 工作中遇到的技术问题google半小时如果还没解决,再去咨询同事,把自己做过的尝试和料想讲出来

5. 对待工作不要抱着侥幸心里,认真对待,偷懒换来的多是反复的整改。

6. 说明问题尽可能用数听说话,需要先明确需求是甚么,进而预研技术设计是不是能够实现,再着手展开。

7. 遇到业务投诉问题,先回复抚慰下,再根据情况排期解决,rtx 回复及语气也是需要非常注意的!

8. 遇到完全不会的开发语言或环境,先找篇tutorial了解下基本语法,渐渐可以在查看他人代码和修改中提高。

9. 跟同事或leader开玩笑要注意场合和话题。

10.不要在难受的时候选择 '回避/离开'冲突 à 难受 à 倒空情绪 à 分析问题 à寻觅解决方案 à 化解冲突 à 再分析问题 à ……

11. 测试包括功能测试和性能测试,功能测试要覆盖到位,性能测试要1个进程均匀发包带时间戳Ext,另外一个进程异步收包gettimeofday()-Ext=响应时间,计算丢包率,平均响应时间等。

12. 编写高性能c/c++服务器程序,对调用的系统api耗时要有比较清晰的认识,比如解1个很大的包,可以先init(把结构体每一个字段,如果是字符串则首字符设'',数值则设0),解包后再在字符串字段后append '' 。
海量服务,1切尽在掌握,你才敢说满足性能要求。


13. shell/perl/python操作文本之类需要非常注意各种空格问题,regex时出现的问题很多。还有1些并行and or的操作需要想清楚逻辑,别笑,你或许正在犯这个毛病。

14. 对脚本来讲是解释履行的,故可能存在1些代码拼写毛病之类的,在没运行到此行时会也是不出错的。

15. 调试程序,有时真是心态问题,实在没思路就出去散步1圈,或许会有新的想法。淡定,最能诠释在调试Bug时需要的心情要求了,特别是项目比较急的时候。

16. 1般的服务器程序需要做到支持平滑扩容,1些配置尽可能写在配置文件里,代码也不要出现魔鬼数字,如果需要重新加载新配置,弄个命令客户端发命令便可。各种异常监控也要到位,记住,异常总是会有的,网络抽风了?有人歹意攻击你?雪崩了?流量穿透?

17. 关于网络协议包结构,看需求而定,有传统的定长结构体,长度+body结构,TLV变长数组等等。你需要明白的是,网络传输底层永久是字节流,不管你本来想发送的是甚么类型的数据,所以如果结构体有填充字段而直接send(&struct, sizeof(struct)),接收解析时可能会出现问题。另外注意protobuf 序列化成string时,string大小要用size(),不要strlen,中间可能有'',踩过的坑,其实这触及到 string("aaa")和string("aaaa", 5)两种初始化方式的不同。

18. firefox f12可以直接调试js,1些基本的前端调试需求是可以满足了。

19.模仿,尽可能地模仿,有可用的框架就用,现成的工具修改就用,模仿优秀的人做事方式,比如导师说:不可忍耐原则。面对重复手工劳作你不弄个自动化工具?机器总是告警你只是重启而不去深究?用他人的框架而不先学习?..., 这些都是不可以忍耐的!跨出自己的舒适区很难,但跨出去了就是成长。

20. 需求分析--概要设计--详细设计--开发--测试--部署上线--运营。需要能掌控节奏,总周期最好能精确到工作日,不要低估测试的时间,约占开发的1/4左右。最好给自己留几天豫备突发插入的其他事情,避免项目延期。


实战提高篇:
1. 《操作系统教程》第4版,孙钟秀著,陈怀临注解。主要多了解1些基本概念。
2. 重读《linux c编程1站式学习》。重点关注关于编译链接动态库调试等方面的内容。
3. 浏览《C学习笔记》。内容难度比较大,对makefile&gdb要做相干延伸,1定要完全掌握。
4. 重读《Accelerated C++》。重点关注如何层层抽象展现。
5. 浏览《Python学习笔记》。最好对照下shell/perl/python在某1个细点功能具体实现的不同。
6. svn的操作还要再熟习下,最好明白不同操作的影响,包括打分支branch,svn软链接等经常使用技能。
7. 对数据库基本概念的事务,1致性,回滚,索引等概念深入了解下,可以对比mysql学习。
8. 浏览在Linux内核中使用到的数据结构与算法实现。
9. 浏览《The Web application hacker's handbook》。
10.重新浏览自己的博客文章。


装逼长远篇
1.读书
2.关注产品和市场
3.学会管理
4.学会讲授和传授
5.努力的去造轮子
6.关注新技术
7.有自己的朋友圈子
8.培养情商



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐