后端工程师
2020-12-19 11:48:10 0 举报
AI智能生成
后端工程师
作者其他创作
大纲/内容
职位简介
利用各类技术语言进行产品业务逻辑和功能的实现。
简单的说:看的见东西都是前端或客户端,后端通常是看不见的技术。
例外情况:小的公司,其后端会同时写少量前端(JS/JSP/PHP)。以 NodeJS 为技术栈的公司,其前端会写后端(全栈工程师)
同时掌握后端/JS 开发能力,也是全栈工程师,会有少量公司需要。
同时掌握后端/JS 开发能力,也是全栈工程师,会有少量公司需要。
岗位划分
按语言分
Java
公司:美团,阿里,去哪儿,58集团,各种小公司
Go
公司:头条,B 站,快手,新创业的公司
PHP
公司:百度,各种小公司
C++
公司:腾讯,华为,多数偏系统底层,少量做业务
Python
公司:豆瓣,百度
Scala
各种公司中大数据部门
Ruby/C#/Rust/JavaScript/...
按方向分
各类业务
社交,网站,外卖,工具,网站
平台方向
云计算,构建服务,Linux 系统,DevOps
电商方向
订单,支付,结算,对账,商品
游戏方向
不同类型游戏之间会差异较大,同时也接受非游戏的后端转游戏。「反向会很困难」
算法
推荐算法,AI 算法为主
大数据
数据挖掘,消息队列, Flink/Hadoop/Spark/Kafka/MapReduce
按级别分
初级
本科毕业
校招/跳槽
中级
研究生毕业、工作经验 1~4 年
校招/跳槽/晋升
高级/专家
各大公司的主力人员,工作经验3-5+, 阿里 P7
跳槽/晋升
架构师/Leader
工作经验 8+, 各大公司的一线管理,架构师,典型职级 阿里的 P8
晋升/跳槽/提拔
业务线技术负责人
工作经验 8+ M2/P9
一般组织提拔,很少招聘
总经理/副总裁/知名大牛
工作经验 8+ M3+/P10+
大牛跳槽/创业成功/组织提拔
典型一天工作(java,业务方向)
设计 - 设计数据库表,设计 API 接口
编码
初始化工程(maven)
业务分层
数据访问层
业务服务/领域层
接口层
实现数据库访问
定义模型对象: OrderEntity/OrderModel
定义 DAO 对象, OrderDao
使用 ORM 或直接 SQL 实现数据 CRUD
增删改查:CRUD create/read/update/delete
实现业务逻辑
定义数据类型 PO
使用数据访问层对象 OrderDao 操作数据,编写逻辑
if/else/for/swich/return
实现接口逻辑
定义数据类型 DTO
拼接 Enity/Model 对象到 DTO 中
返回 JSP/JSON/XML 等数据
测试 - 编写 juint 测试
有些业务不要求/小公司可能不要求
自己验证&调试 - 本地断点 debug/ 线上日志调整
基本素养之一,自己验证和调试,看个人素质能力
提交代码(git/svn),审查(CR, Code Reivew)
大公司不规范团队和小公司可能基本没有 CR 环节
提交给 QA 测试,进 改 BUG 循环
修改 QA 验出来的问题,再提交给 QA 验证
发布/上线
有些公司很完善,发布上线都是工具,比如持续集成工具 (jekins) 来完成,有些公司这个步骤由 QA 执行。
不完善的公司需要,打包为 jar/war 包发布到特定的机器,重启服务
阿里 P7 举例
定义
1)在专业领域,对⾃自⼰己所从事的职业具备⼀一定的前瞻性的 了了解,在某个⽅方⾯面独到,对公司关于此⽅方⾯面的技术或管理理 产⽣生影响;
2)对于复杂问题的解决有⾃自⼰己的⻅见解,对于问题的识别、 优先级分配⻅见解尤其有影响⼒,善于寻求资源解决问题; 也常常因为对于⼯工作的熟练⽽而有创新的办法,表现出解决 问题的能力;
3)可独⽴立领导跨部⻔门的项⽬目;能够培训和教导新进员⼯工;
4)是专业领域的资深⼈人⼠士;
5)⾏行行业外或公司内培养周期较⻓长。
2)对于复杂问题的解决有⾃自⼰己的⻅见解,对于问题的识别、 优先级分配⻅见解尤其有影响⼒,善于寻求资源解决问题; 也常常因为对于⼯工作的熟练⽽而有创新的办法,表现出解决 问题的能力;
3)可独⽴立领导跨部⻔门的项⽬目;能够培训和教导新进员⼯工;
4)是专业领域的资深⼈人⼠士;
5)⾏行行业外或公司内培养周期较⻓长。
特点
团队中的主力研发人员/占比最多, 也是其他知名互联网公司人才梯度的中间层,目前 90 后较多
阿里面试
技术一面
基础知识,语言基础、系统基础、JVM 基础及 SQL 等等
常见问题
JVM 内存分区
HashMap 实现及性能
垃圾回收:CMS &G1 等回收器及特点
乐观锁:CAS 原理及实现
遇到多线程场景有什么?怎么解决的?
一两个简单难度的算法,比如二叉树层序
框架相关:IOC/Spring/Servlet
数据库相关:mysql 索引有哪些?有什么区别?
缓存相关:常见缓存有哪些?redis 数据结构,如何实现排行榜?
技术二面
分布式锁原理及应用场景
分布式事务及选择
https实现原理,加解密知识,如 RSA, SHA, MD5
负债均衡,怎么用?有哪些技术?
dubbo 有哪些模块?底层通信原理?序列化原理?RPC 框架设计与实现?
InnoDB: 事务隔离级别,区别,解决了哪些问题?什么是幻读?如何避免?
三面、四面
redis 一致性hash算法,分布式一致性算法有哪些?有什么区别?
分布式锁方案:redis, zk, etcd 的区别及性能特点
MQ(kafka/rocketmq/..:发送消息方式有哪些?消息消费的方式及调优方案?消息如何不丢失?
技术能力
编程语言能力(Java 举例)
Java 基础知识:基础类型/对象/接口/类/抽象类/注解/多线程并发基础,掌握了就能看懂大部分代码
印刷版就是类,印出来的东西就是一个对象
Java 常用数据结构&库: List/Set/Map...,日志,日期时间,掌握了就能写一些非常基础逻辑
Java 技术框架与库
基础框架:Spring/Spring Boot/Spring Cloud
web 中间件:struts/spring-web-mvc/jetty/tomcat
rpc 服务中间件
thrift/grpc/hession/dubbo
数据中间件:redis/mysql/消息队列(kafka)/log/
测试框架:junit/mockito/springtest
构建打包工具: Maven/Gradle/Docker/...
Java 高级主题
多线程/网络编程/异常/文件流
ORM 技术及原理
JVM 虚拟机参数及调优
利用注解,反射与泛型设计框架性代码
动态代理/切面编程技术
多线程高级主题
可重入锁,计数器,线程安全 Map,线程变量
工具能力
版本控制工具
git/subversion/...
git 是技术稍微好一点的公司会选择的,subversion 之前主流的工具
抓包工具
tcpdump/wiresharp/fiddler 等用于查看协议,定位问题
打包及发包工具(Java)
gradle/maven/ant/jenkins
生成可执行的包,发布到仓库
通识能力
设计模式与原则
各种设计模式及应用
六大软件设计原则
重构的原则
架构设计
业务架构设计:使用系统或模块的大小与复杂度来衡量,业务相关性和主观性比较大
分布式架构设计:分布式系统/分布式存储/分布式锁一致性算法
SOA/微服务/RPC/服务治理(熔断/限流/权限)/服务注册发现
领域知识
TCP/IP 协议,互联网的最为基础协议,内网路由,访问,包括 HTTP 协议也基于 TCP 协议
HTTP 协议及抓包工具 Http 是我们看到主要协议,web 网站都是基于此协议.
Linux 系统及服务
nginx/HA
负债均衡
DNS 轮询
加解密等基础安全知识
加密算法及应用
Https 原理
算法知识
数据结构:Hash/Set/List/Queue/SkipList/Heap
递归,贪心,分治,动态规划
头条/快手/谷歌/FB,现在很多大厂会重视算法
解决方法:刷题, LeetCode、剑指 Offer
大厂面试资料
https://github.com/0voice/interview_internal_reference
https://github.com/resumejob/interview-questions
https://github.com/shfshanyue/Daily-Question
https://q.shanyue.tech/server/
大厂笔试必备
刷题:LeetCode,推荐覃超老师的 LeetCode 刷题训练营和刷题讲解
github 资料
https://github.com/azl397985856/leetcode
0 条评论
下一页