公司新人培训-后端技能树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了公司新人培训-后端技能树相关的知识,希望对你有一定的参考价值。
1、前端篇:
基本的 JS 与 CSS至少需要有一个大概的认识
基础
- 常见的状态码 与 后端相应的错误排查
- 301与 302的区别
- 304如何产生与如何避免
- …
- JSONP 与 JSON
- 构造一个jsonp的请求的方式
- 原生的如何构造
- jquery如何构造
- …
- 构造一个jsonp响应
- 构造一个jsonp的请求的方式
- AJAX
- 如何构造一个AJAX请求
- 原生的如何构造
- jquery如何构造
- ….
- 如何构造一个AJAX请求
- 跨域的几种处理方式
- 场景
- 同主域不同子域
- 不同主域
- 处理方式
- 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会称作反向代理服务器
- 当nginx代理后端tomcat请求的时候 这个时候就是正向啦. 正反只是相对的不是绝对
- 为什么nginx会称作反向代理服务器
-
- server_name 的含义
- nginx中的server_name其实就是匹配http请求头中的host
- curl -H ‘host:www.baidu.com’ ‘http://115.239.211.112/s?wd=Hi‘ 与 http://www.baidu.com/s?wd=Hi 等价
- location总结及rewrite规则写法
- 默认变量的参数作用及含义
- nginx的upstream配置
- 常与默认的负载均衡策略
- 进阶
- 会一些简单的ngx方言处理
- 手动编译并且增加模块
- 利用nginx搭建一个FQ工具
- nginx + lua 进阶学习
- nginx处理请求的11个阶段
- server_name 的含义
应用服务器
- tomcat
- tomcat构成的三部分
- JSP容器 把JSP翻译成serverlet
- WEB容器 主要用来处理静态资源
- Serverlet容器 (名字叫catalina 玩过LOL都知道) 处理server 这就是 之所以叫 tomcat/logs/catalina.out 二不是log.out
- 基本的网络配置
- JVM参数的设置
- 项目路径配置的方式
- 配置server.xml
- 拷贝到webapp
- 找到JSP生成的java与class文件
- tomcat构成的三部分
- 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
- ...
- 框架的产生是为了提升开发效率,提升效率的同时要思考一个问题,你是否了解他的底层原理,或者它是如何架构的
- 带着疑问去找答案,去调试,收获才是最大
- 框架始终只是一个工具
- struts1
- 模板引擎
- 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缓存]
自勉,前途路漫漫,同志仍需努力啊!!!
以上是关于公司新人培训-后端技能树的主要内容,如果未能解决你的问题,请参考以下文章