公司新人培训-后端技能树

1、前端篇:

基本的 JS 与 CSS至少需要有一个大概的认识

基础

  • 常见的状态码  与 后端相应的错误排查

    • 301与 302的区别
    • 304如何产生与如何避免
  • JSONP 与 JSON
    • 构造一个jsonp的请求的方式

      • 原生的如何构造
      • jquery如何构造
    • 构造一个jsonp响应
  • AJAX
    • 如何构造一个AJAX请求

      • 原生的如何构造
      • jquery如何构造
      • ….
  • 跨域的几种处理方式
    • 场景

      • 同主域不同子域
      • 不同主域
    • 处理方式
      • iframe
      • 代理请求
      • script元素的src属性 ( jsonp )
      • cookie.setDomain
      • 后端设置P3P头响应
      • ….
  • COOKIE
    • cookie的作用
    • cookie 与 后端的 session 的区别
    • httponly的cookie有什么作用
  • 描述一段URL包含了哪些信息 http://www.baidu.com/s?wd=Hi#heiheihei

进阶

  • 各种header的含义
  • HTTP/HTTPS的抓包
    • 浏览器调试工具
    • anyproxy
    • httpscoop
    • fiddler
    • wireshark
    • charles
  • HTTP的长轮询
  • XSS
  • websocket
  • 快速模拟一次HTTP请求
  • 熟悉一些MVC的前端框架
  • 浏览器插件
  • node-webkit

2、基础知识篇

好了终于从前端请求经过网络到达了我们的服务器,开启了漫长的后端之旅

请求会先到达我们的web服务器(nginx),再由nginx判断是静态请求还是需要转发到我们的应用服务器(tomcat)上进行逻辑处理


WEB服务器

  • Apache
  • Nginx
    • nginx的分支

      • teginx            [SLB服务器在用]
      • openresty      [爬虫模块]
    • 为什么nginx会称作反向代理服务器

      • 当nginx代理后端tomcat请求的时候 这个时候就是正向啦. 正反只是相对的不是绝对
    • server_name 的含义

    • location总结及rewrite规则写法
    • 默认变量的参数作用及含义
    • nginx的upstream配置
      • 常与默认的负载均衡策略
    • 进阶
      • 会一些简单的ngx方言处理
      • 手动编译并且增加模块
      • 利用nginx搭建一个FQ工具
      • nginx + lua 进阶学习
      • nginx处理请求的11个阶段

应用服务器

  • tomcat

    • tomcat构成的三部分

      • JSP容器     把JSP翻译成serverlet
      • WEB容器    主要用来处理静态资源
      • Serverlet容器 (名字叫catalina  玩过LOL都知道)  处理server   这就是  之所以叫 tomcat/logs/catalina.out   二不是log.out
    • 基本的网络配置
    • JVM参数的设置
    • 项目路径配置的方式
      • 配置server.xml
      • 拷贝到webapp
    • 找到JSP生成的java与class文件
  • jetty

缓存

  • 对象访问的延迟

    • 栈内局部变量(方法内)   >  线程缓存(threadlocal)  > 堆内缓存(全局变量/ehcache)   > 堆外缓存  > 进程外缓存(memcache/redis)
    • 堆内缓存  (常见的缓存框架都是在堆内)
      • 优点   配置简单
      • 缺点  可能会带来GC频繁,降低可用性
    • 堆外缓存
      • 缺点   但是泄露之后比较难排查
      • 优点   没有GC带来的延迟
    • 进程外缓存  
      • 优点   程序重启无需重新加载, 支持分布式
      • 缺点   运维能力
    • …..
  • 缓存的选择没有万金油,一般是根据业务场景选择不同的方式,
  • 优缺点需要自己挖掘,知道原理跟优化方向才是最终目的

线程

  • 线程与进程的区别
  • 守护线程与普通线程
  • 线程调度
    • 分时调度模型和抢占式调度模型
    • java采用抢占调度优先级高的优先,优先级相等的随机 
      • java中调整线程的优先级需要注意什么
  • 实现线程的几种方式
    • 无返回值的线程
    • 有返回值的线程
  • JDK提供的几种线程池的使用场景与实现的队

序列化/反序列化

  • 序列化是将对象状态转换为可持久化或传输的格式的过程,相对的就是反序列化
  • 我理解的序列化的最终目的是为了存储与传输
  • 一般讨论这个问题都会围绕几个方面展开
    • 性能问题     时间/空间损耗(比如压缩文件压缩比率越大时间越长)
    • 通用(跨平台)        比如json / xml 比较常见并且可读性比较好
    • 调试复杂度
  • 序列化框架与类库选择
    • java原生的        (我个人来说没有特殊的需求一般用原生的,稳定可靠,因为系统的可优化程度还没有达到这个级别)
    • thrift
    • protobuf
    • hessian
    • ...

WEB

  • 基础

    • web.xml中的标签配置
    • Filter、Servlet、Listener
      • 初始化顺序
      • 功能与应用的场景
    • Servlet的生命周期
    • request、session、application的作用域(jsp还包含了一个page)
    • forward 与 redirect 的区别
  • MVC框架   
    • struts1

      • 流程比较简单,可以学习核心逻辑然后自己模拟写一个
    • struts2
      • 出了一个灰常大的漏洞之后就被抛弃了
    • springmvc
      • 目前公司正在用,我也只是处于会用的阶段,有问题可以一起交流
      • Dispatcherservlet处理请求的一些流程,涉及到的组件
    • jfinal
    • ...
    • 框架的产生是为了提升开发效率,提升效率的同时要思考一个问题,你是否了解他的底层原理,或者它是如何架构的
    • 带着疑问去找答案,去调试,收获才是最大
    • 框架始终只是一个工具
  • 模板引擎
    • jsp
    • velocity
    • freeMarker
    • ...

IO流 与 常见的文件操作

  • 文件字符集问题首先要确定好
  • JDK中 InputStream 与 OutputStream 的几个实现
  • 一般涉及到IO操作的地方
    • 文件读取与传输
    • RPC框架中的序列化
  • 收集资料描述  文件的顺序读写 与 随机读写的性能差异
    • buffer类的具体作用
  • 在一个512M内存的JVM中 如何把一个1G的csv文件解析并存储到数据库中
  • 在Serverlet中如何上传/下载文件
    • nginx 与 spring mvc都有最大上传限制的开关
    • 下载的时候需要设置哪些头,浏览器又是如何知道服务端返回的是下载动作
    • 生成验证码
  • 常用工具类
    • FileUtils 与 IOUtils
    • excel
      • poi
      • xls
    • 图片
      • java方面的类库好像不怎么火,主要是jvm在这方面效率比较低吧
      • graphicsmagick(这个跟java无关,但是我们的一些业务用到了他,所以特别提一下)

3、网络篇

虽然是开发但是有些简单的命令还是要需要知道,尤其是在排查问题的时候能快速定位问题

  • 命令

    • 常用

      • ping
      • telnet
      • netstat
    • 路由相关
      • dig
      • route
      • traceroute
    • 流量相关
      • ifstat
      • iftop
  • 如何理解TCP/IP协议中的   IP地址与port
  • DNS服务 与 本地hosts文件

问题

  • 尝试描述当你在浏览器输入URL并敲下回车之后产生了哪些协议的请求? 比如 http://www.baidu.com/s?wd=Hi
  • 如何在Linux环境下迅速查看某tomcat / dubbo 监听了哪些端口 ? 当前有哪些机器访问
  • 多网卡环境下tomcat 或 dubbo 如何绑定内网

进阶

  • TCP的粘包与拆包出现的场景与常见的解决办法
  • 尝试用抓包工具抓取一次ARP协议的请求与响应  [记得清理本地ARP缓存]

    自勉,前途路漫漫,同志仍需努力啊!!!
时间: 2024-07-29 12:37:48

公司新人培训-后端技能树的相关文章

公司内部培训SQL Server传统索引结构PPT分享

公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E7%B4%A2%E5%BC%95%E7%BB%93%E6%9E%84.ppt PPT有不对的地方,多多拍砖o(∩_∩)o

公司内部培训AlwaysOn PPT分享

公司内部培训AlwaysOn PPT分享 下载地址: http://files.cnblogs.com/files/lyhabc/alwayson.ppt

大后端技能树

你了解后端吗? 后端的工作是什么? 做好后端工作需要了解和学习哪些技能? 硬件 CPU 了解CPU CPU高效编程技术 SMP.NUMA.MPP体系结构介绍 存储 磁盘Raid简介及性能分析 网络存储 了解IO设备 了解IO协议栈 SSD (SLC, MLC, TLC区别,什么是Trim,如何开启) SAS 跟 SATA 的区别 性能与调优 基础 Software optimization resources 系统调优 SUSE Linux Enterprise Server System An

测试新人培训原则

把自己的员工当做执行经理,像评估执行经理那样对其评估.不要指望其能够同时高效处理多个项目. 阅读自己员工的测试报告.要想知道实际情况,可以与其一起工作. 培养员工的专业技术技能和行业领域知识.多看看技术支持日志. 让新测试员对照软件核对文档. 通过正面测试使新测试员熟悉产品:了解系统提供的功能后,尝试以简单但实际的方式使用该产品. 让测试新手在编写新错误报告之前,先改写老的错误报告. 让测试新手在测试新程序错误之前,先重新测试老的程序错误. 不要派测试新手参加几乎完成的项目.

【原创】公司各个阶段 CTO 需要做什么?(上篇)

CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用.但随着公司的不断发展,CTO 的工作重心也会不断变化.只有在正确的阶段做正确的事,才能更好地为公司做出贡献.我是空中金融 CTO ,TGO 鲲鹏会上海分会会员.加入空中金融之前,我曾在饿了么.空中网.5173 等互联网公司担任中层技术管理者,有过三次从 0( 或 0.5 )开始的创业公司工作经历.本篇文章,我将为大家分享,公司初创阶段 CTO 需要做的事. 假设一个公司发展有以下几个阶段: 0 :创始阶段: 0.5 :有产品但无管理

web前端开发和后端开发有什么区别?

web前端分为网页设计师.网页美工.web前端开发工程师 首先网页设计师是对网页的架构.色彩以及网站的整体页面代码负责 网页美工只针对UI这块儿的东西,比如网站是否做的漂亮 web前端开发工程师是负责交互设计的,需要和程序猿进行交互设计的配合. web前端需要掌握的有脚本技术javascript DIV+CSS现下最流行的页面搭建技术,ajax和jquery以及简单的后端程序等. 后端的话可供开发的语言有 asp.php.jsp..NET 这些后端开发语言的话搭建环境都不一样,具体如果你想学的话

李新海:给你解析培训大纲中服务客户的那点事

讲师的客户,这个在培训行业里面水特别深,值得多说一些. 首先,我们先来说说真的客户,再来说说"假"的客户. 真的客户,自然是货真价实,确实是讲师通知自己的营销,或者培训机构的推广,获得的讲课机会,无论是免费的,还是收费的,都是真实的客户,那就正常写在讲师的资料中.可能有些人有疑问,李老师,没有收费的客户,算客户吗,我的观点是,必须算. 一般新讲师,刚出道,客户比较少,采用免费授课,或者置换授课的方式,这样无可厚非,是一种双赢的办法,一方面积累了客户,一方面也增加了讲课场次,锻炼了自己.

传统企业拥抱互联网和O2O的第一步~线上团队的培训

随着O2O的兴起,太多的传统企业已经或即将拥抱O2O.线上团队的组建和培训,是第一个要解决的问题,然而有的才能放矢,什么是O2O这个事情需要先整整明白.公欲善其事,必先利其器.团队是公司的利器,好的模式加上专业的团队才有可能成事.所以团队的组建,其实是考虑为公司添加一种技能,有一些,是招聘来的新人原来就拥有和具备的,而另外一些,却需要团队组建后,公司通过培训的方式增加或者加强.除了一些企业文化,规章制度外,一个公司的核心团队,第一次培训或者开始几次的培训的定位,将是至关重要.好的培训定位和实施,

技术团队内部培训体系的建立

作为技术管理者,帮助下属提高工作技能是重要的日常工作之一.下属能力越强,工作效率越高,工作质量也越好,整个团队的绩效目标越容易达成.为了提高团队成员的个人能力,大部分技术团队都会有一些定期,不定期的培训和分享:一些团队也会建立自己的培训知识库.但不少人会觉得培训的效果一般.这里和大家分享一下,我过去建立技术团队内部培训体系的一些心得和经验. 要让培训有比较好的效果,关键是"在合适的时间,给合适的人,提供合适的培训". 首先,培训的时机很重要.最好的培训时机是:培训完,培训的知识就能马上