2016年总结

闲谈


已经毕业快一年了,少了很多刚出来那种激情了,感觉在公司呆久了也开始老油条了。嘻嘻!!
开始觉得目前的工作很无趣!
经常都是开始一个项目然后框架搭一搭赋值粘贴,一周个把月就是一个项目。
一把梭!!
在这里记录一下在公司这一年的收获吧。
首先,刚进公司的时候。虽然之前也有在另一家公司实习过。但是来了这一家公司明显感觉到了两家公司的不一样。可能目前待的公司算是厦门比较大的公司。也可能是因为目前公司搭建整个开发框架的那个小兄弟技术确实牛逼。刚进来就被这家公司的技术框架吸引了。从六月份开始,到现在用这个框架陆陆续续开发了五六个项目。一般都是半个月到一个月 最长的项目应该有两个多月。

框架对比

在这边上一下两家公司框架对比
| 框架名称 | 新公司 | 原公司 |
|—————|—————|————-|
| 网络请求 |Retrofit+RxJava+OkHttp |Volley+OkHttp|
| 本地数据存储| SQLlite+SharePreference(封装的较好)|SQLlite+SharePreference|
|数据解析|Gson+Retrofit(这边是Retrofit自带的一个Gson类,可以用注解的形式来绑定对象值)| 请求完毕后用Gson做解析,自己封装的库,好像添加了泛型实现,但总的来讲比较复杂 |
| 布局工具 | AutoLayout(zhy的自动布局工具不得不说真的好用) | 没有使用自动布局工具 |
| Log工具 | Logger(这个开源的log库感觉还蛮好用的一目了然) | DebugUtil |
| 框架模式 | MVP | 无(数据绑定跟请求放一起了。这样在页面中存在了很多回调代码,感觉看起来很混乱。而且耦合度高。) |
| 代码支持 | Lambda | 无(Lambda纯粹是用来简化代码的,但是不适合阅读) |
| 事件总线 | EventBus(也是基于handle机制开发的蛮好用的,值得一试。) |Broadcast|
| 列表布局 | RecycleView(封装) | ListView,GridView(封装) |
|其他|支持高版本沉浸式,代码简洁。|不得不说实习的那一家公司各种工具类写的满满的,但是很多工具类其实都没有重用到。因为大家都不知道有那个类。所以在维护的时候就出现很多冗余的代码。|

贴一下使用到的框架。鸿洋的autolayout可以直接compile下来使用具体可以去找找他的github项目 ptr没怎么研究。就一个带ptrheadr的容器。其他的没什么。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//控件
compile project(':autolayout')
// Rx
compile 'io.reactivex:rxjava:1.1.1'
compile 'io.reactivex:rxandroid:1.1.0'
// Retrofit网络请求
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.google.code.gson:gson:2.6.1'
//ptr
compile 'in.srain.cube:ultra-ptr:1.0.11'
//glide
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'jp.wasabeef:glide-transformations:2.0.1'
//eventpost
compile 'org.greenrobot:eventbus:3.0.0'
//okhttp
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//log
compile 'com.orhanobut:logger:1.15'
//二维码
compile 'com.google.zxing:core:3.3.0'

去上一家公司打了三个月的酱油,就写过一个模块的代码。还有一些bug的修改。当然后面问题也都是解决掉了。自己用上一家公司的框架也写过几个小项目。
新公司进来,从学习代码规范(上一家公司也有自己的代码规范,不过没有真正学好,因为写的代码不多),然后熟悉框架,差不多一周。之后就开始各种项目。做项目当然开心啦。旁边有同事不懂可以问。平常就各种把框架里面的一个个控件熟悉过来。那段时间刚进来。觉得每天都收获满满。一直加班~(那时候一直在想以我那时候的成长速度,一年后应该就屌炸天了。)不过现在已经是半年多了。事实并没有吊炸天。当然自身的成长还是不少的。这里也讲一下没有吊炸天的原因,因为在一家公司能学到的东西是有限的。

自我反思

在这家公司我做的项目没有一个项目上线有后续维护的。所有的都是一次做完,下一个项目接踵而至。从一开始做每一个功能都很新奇,到最后写个功能都能闭上眼睛复制粘贴。。我就觉得框架已经差不多了。如果要得到新知识只能自己去学。那个时候开始思考在普通公司工作跟在大公司工作的区别。很多小公司的项目用户其实并不多。只要能做到满足这几个用户的需求就可以了。所以对于性能,甚至效率。还有大部分用户体验的细节上都没有很用心。这个可以去看看腾讯微信的研磨就知道了。人家可是从心理学,行为学的角度来做用户体验的。所以呢?在非大公司的环境下所做的工作永远都是复制粘贴。我不禁想到十几年后我已经不够资格当一个程序员了。但是还是在做这些复制粘贴的工作领着死不能涨的工资。默默流下了悔恨的泪水。

嗯哼,上面的话语其实也讲明了选择一家大公司的重要性。大公司所做的项目都是为用户而来。他们要做的不只是不只是开发一个项目,更有从代码扩展,性能优化,还有单元测试,内存优化。这几个角度来使一个app趋于完美。感觉在那样的环境下生活的程序员才能叫真正的程序员吧。而我们永远走在程序和伪程序,有机会一定要去大公司!!!!!

好了。下一段。

面试与总结

讲一下上周五去某个上市公司的面试经历

大概是酱的,之前想去一些大一点的公司继续深入学习更多的知识。然后就抽出手来投了几家公司。。当然这些公司招的职位都是高级职位。可能觉得初级职位太low了。作为一个一年开发经验的我。对于这种高级职位,感觉压力山大…投完之后感觉很后悔,为何不先选几个小公司去面几场先增加一下经验。好吧,过了一周,果不其然都被筛掉了。 又过了几天突然其中一家公司打电话过来约我去面试。可以看出我当时的表情= =~卧槽!!卧槽!!!走上人生巅峰的机会。当然那几天工作一直很忙,因为有一个项目进度很赶。所以我就多加了一会班。赶了一下进度,然后请了一天假去面试。。

面试过程大概如下:
一面:技术主管面试 二面:总监面试 一面和二面之间因为有一段时间是在等总监。所以顺便跟HR聊了一会。
跟主管聊的时候其实聊的还可以(当时感觉),可能他人也蛮不错的。他应该是做图像处理那一块的。所以跟我日常的工作经验还是有差距的。主要就聊了一下Handle,内存优化,OOM,自定义控件,三级缓存等。自己也回答了一些大概,当然一些深入的东西他也没去细究。包括面完我发现我居然忽略掉他的一些问题了。。好吧聊的还算开心。顺便问了他几个笔试题目。。感觉他脑子动的还是蛮快的。在这期间跟HR聊了一会。这里就聊的稍微有点瑕疵了。当然还是聊的蛮开心的。
加下来就是总监面了。那时候精神状态特别差。有好几个明明懂的问题。直接就说不懂了。然后各种答不对题。但他也算蛮有耐心的。我很多地方都没有说好,但总监就比较有气场一些。他也没说我讲的对不对,也不指正我的错误。有没答上的点就要求我补充,没说什么点,直接问有什么要补充的吗….真是日了狗。。然后越到后面脑子越乱。。后面问我有什么问题的时候我也没答好,问了一个问题后,直接跟他讲没问题了。。

在这边做一下面试总结。其实面试官的所有题目都是为开发岗位所必须具备的技能提的。包括一些逻辑题目还有java基础题目。当然很多题目他在我做完之后又问了我一次,这个可能就是答的并不符合他的要求。认真讲的话那天有几个点没把握住。
1.在面试的场合一定不要紧张。不然会忘掉很多东西。
2.如果他们又提问了卷子上的问题。说明有一部分问题还没有回答到点上。这个时候可以对自己所知道的在做进一步扩展。如果实在回答不对,就问一下到底是什么点。
3.职业生涯这一块最好对自己这几年的规划,比如说走技术路,以后可能会做架构这一方面的。比如说,先走技术路,之后可能会转管理这一块。
3.一般在结尾的时候他们会问你有没有什么问题想知道的。这个是三个面试官都有问我的。这个时候应该做出的回答可以是之前他们问你而你没有答上来的问题。也可以问一下如果进入公司负责的项目。或者公司对这方面技术的人有什么需求,自己有哪一些点没有做好。
4.在面试前请做好心理准备,有充足的精力来面对面试。

By xiaolong:You have a dream,you got to protect it!