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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了公司新人培训-后端技能树相关的知识,希望对你有一定的参考价值。

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缓存]


    自勉,前途路漫漫,同志仍需努力啊!!!

以上是关于公司新人培训-后端技能树的主要内容,如果未能解决你的问题,请参考以下文章

新人必读:区块链实用型技能树

大后端技能树

后端技能树修炼:CAP 定理

后端技能树修炼:基于队列的流量削峰模式

体验一命通关 - Java技能树测评

体验一命通关 - Java技能树测评