java后台开发 技能表(来自光云科技)

来源:互联网 发布:沙盘演练软件技巧 编辑:程序博客网 时间:2024/04/27 16:48

后台开发技能树

通用技能

 

品质

  1. 一个品德不正的人,最终将受到命运的惩罚
  2. 品质正,这个人一般不会差到哪里去,在同类中一般是更受人欢迎和更容易成功的人

沟通、反馈、责任

  1. 一个无沟通能力的人,要么是天才,要么是不可爱的人
  2. 及时反馈,不要等到问题很严重了才反馈出来
  3. #今日工作#、周报,它的意义在于你反馈出你的状态
  4. 工作有大小,责任心无大小

成长、态度

  1. 小事心态
    1. 千里之堤,毁于蚁穴,所有基础的细节都需要注意。
    2. 所有能做高级事情的人,基本上都能把小事干得漂亮
    3. 基础不牢、地动山摇
    4. 只有把小事干得漂亮,才能赢得勋章,勋章积累信任,信任赢取机会,机会获取成就
  2. 提问的艺术
    1. 不要遇到问题就提,先思考,再提问
  3. 任务拆分
    1. 成长过程会经历:能力越大、责任越大、事情越多
    2. 思路(凡事要做好计划推动自己)
      1. 拆分细化为多个点
      2. 排好优先级
      3. 加入时间维度:何时能完成
      4. 是否需要寻求帮助,谁能帮你,自己单干?
      5. 任务是否可以切换/并发
      6. 自己欠缺什么,立马发现

专业技能

HTTP

  1. http抓包调试
    1. PC
      1. chrome开发者工具
      2. firebug
      3. IE
      4. fiddler
    2. 手机(怎么抓取自己的手机出来的http)
  2. http api 模拟工具
    1. chrome 插件DHC
  3. http常见状态码含义,甚至更复杂的状态。
    1. 301
    2. 302
    3. e-tag、last-modified,keep-alived
    4. http权威指南(不一定要全部看完,可以带着疑问看,了解越多自然是越好)
  4. p3p头有什么用

前端

  1. 原则上是鼓励全栈工程师,对于后台工程有时候自己想玩个小东西,不会搞页面也挺苦恼的。
  2. 常见的前端框架应该要玩过一些东西,jquery、angularjs、jquery-mobile、bootstrap等等
    1. jQuery
    2. ECharts
    3. Angular JS
    4. Bootstrap
  3. 常见的模板实践过一两个(smartAdmin\INSPINIA)(做一些小工具没有问题)
  4. 前端里依然会有设计,比如MVC,分层设计等。什么方案更优雅?这个问题应该好好思考。

JAVA

  1. java集合能相当熟练
  2. java并发包运用得当,知其原理
  3. apache-commons各种常用api了然于心
  4. java io熟练
  5. 网络通信,http、websocket、tcp。使用场景、常规使用熟练
  6. dubbo
  7. 消息队列 metaq、aliyun ONS、aliyun MQS
  8. ray-task
  9. ibatis/mybatis
  10. cobar-client、分表分库思想
  11. netty
  12. spring玩得转,各种细节与机制需要清楚
  13. jvm基础理论知识:内存管理、gc、线程分析、bin目录下的工具。要能用这些基础理论解决实际问题
  14. jvm 高级工具 btrace,知其一二更是甚好

LINUX

  1. 常用命令
    1. top (top -H)
    2. netstat
    3. iostat
  2. 操作系统的基本了解

并发

  1. 生产者消费者
  2. master-slave模式
  3. 线程池
  4. disruptor
  5. http://ifeve.com/ (并发编程网) 不错的学习资源

调度

  1. ray-task
  2. spring quartz
3.  ScheduledExecutorService
  1. timer
  2. crontab 
  3. 分布式调度的核心思想,值得好好思考

数据结构序列化

  1. json
  2. protobuf
  3. rmi
  4. jdk serializable
  5. hessian
  6. 还有很多,这些方式各有哪些优缺点,使用于哪些情况?不要过度优化,够用,知道怎么优化就可以了

DB

  1. 数据库事务概念
  2. mysql binlog 机制
  3. mysql常用的数据架构模式,比如MS,多master。不同的模式有哪些优缺点。(目前我们使用的aliyun的RDS,需要了解一下aliyun DRDS,aliyun已经为我们封装了很多模式)
  4. mysql常用分析命令 desc、explain,了解sql的执行计划,并能进行优化
  5. redis

算法

  1. 常见的经典算法
  2. 不断问自己有没有更优解?

架构设计

  1. 架构设计并不是一件很难的事情,人人都可以做到,需要保持设计思维。
  2. 理解计算机,以及计算机各个部件,再复杂的架构设计都是围绕这些部件展开的,推荐阅读:http://book.douban.com/subject/5333562/
  3. 永远不要过度设计
  4. 经典设计思想
    1. 低耦合、高内聚
    2. 生产者与消费者(master、slave)
  5. 怎么设计
    1. 计算机各部件资源:
      1. CPU
        1. 多线程
        2. 线程并不是加得越多越好,那么加到多少合适?
        3. 串行调用、并行调用
      2. 内存
        1. 缓存加速
      3. 硬盘
        1. SSD增加读写能力
        2. 集中式文件管理
        3. java怎么读写,更快,更适合你的应用场景
      4. 带宽
        1. 传输对象大小
        2. 哪种序列化方式更适合
      5. 网络
        1. 长连接还是短连接
        2. http拉还是websocket推
    2. 分布式
      1. 无状态
      2. 存储
        1. 集中式文件系统
        2. 集中式session
        3. 集中式cache
      3. 计算
        1. SOA(dubbo)
        2. restful api
      4. 任务调度
    3. 用监控和测试数据验证自己的设计
    4. 好的设计一定是优雅的

好的工具

  1. IntelliJ IDEA
  2. sublime text
  3. webstorm
  4. 印象笔记

优质资源

  1. GOOGLE 所有开发人员都应该学会怎么使用google
  2. 码农周刊 http://weekly.manong.io/
  3. 并发编程网 http://ifeve.com/
  4. GitHub https://github.com/
  5. Stack Overflow http://stackoverflow.com/
  6. csdn iteye oschina

好的书籍

  1. 深入理解计算机系统 http://book.douban.com/subject/5333562/
  2. 深入理解java虚拟机 http://book.douban.com/subject/6522893/
  3. 待续...

最重要的能力

以上的内容都很重要,但是我认这还不是最重要的,上面的东西更像工具或外功,真正重要的是你能根据实际的场景使用合理的工具配合上内功(设计能力?算法?业务逻辑规则?)解决问题。可能了解一大堆工具,心法但是面对实际问题,你不知道该出哪一招,你不知道哪招更适合迎战对手,我经常会用做数学题来打比方,上面提到的东西更像数学公式,在不同的阶段我们都会学习和了解很多数学公式,但是真正考试的时候,每道题目不会提示你应该用哪个公式来解答此题。很多时候往往看了答案后才捶胸顿足原来这么简单我怎么没有想到。真正需要很高技术含量的大题也许的确是只有小部分人才能做得出,但是如果你能把前面的正常题目一道道做好,我想应该也可以考一个超过觉大多数人的分数。所以真正最重要的是能对上面提到的内容融汇贯通,什么时候应该用什么样的公式解题。要达到这种阶段,需要很多的练习和实践,需要付诸很多的精力,多折腾多磨练,我想并不会很困难。

 

 

部分内容参考:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.2.html

0 0
原创粉丝点击