技术人的职场:程序员如何从菜鸟到大牛( 二 )


 
B.后端程序员
 
1. 操作系统基础知识 文件系统、任务调度、内存管理 , 进程与线程、进程间通信以及同步 , 锁等知识必须要有 。
 
2. 基础语言 一般要求有C、C++基础 , 精通如但不限于C/C++/PHP/Java/Go等至少其中一种后端语言
 
3. 扎实的网络协议知识 TCP/UDP、HTTP、HTTPS协议 , Linux网络编程
 
4. 存储数据库知识 包含数据库原理 , sql语句的使用、优化 。 积累搭建mysql和运维mysql的经验 。
 
5. 数据结构知识 不要求能写出RB树的算法 , 但对常用的排序要熟悉 。 熟悉常用软件设计模式
 
6. 熟识常用的框架与组件nginx,mysql,redis等
 
7. 实际的项目经验 能分析出系统各个模块的关系 , 为什么这样设计 。 系统瓶颈在哪里 , 如何优化性能
 
C.前端程序员
 
主要分为两大部分:前端代码技能部分(html、css和javascript) , 前端架构部分(构建工具 , 新生框架 , 优化以及安全性) 。
如果把一张网页比喻为一栋楼房 , 那么html相当于搭建一个主体结构 , css相当于来做粉刷 , javascript发挥的作用就是类似于水泥的粘合剂 。 其中任何一个环节出现问题 , 都会可能导致房屋出现问题 。
 
1.html基础 , 如各种Element的含义和用法 。
【技术人的职场:程序员如何从菜鸟到大牛】 
2.dom结构与事件模型 。
 
3.css样式部分 熟悉最基础的布局方式、常用定位的作用和区别、css的一些常用的选择器以及选择器的权重 。 另外就是css的浮动部分 , 掌握浮动的应用场景和消除浮动的常用方法 。 是否熟悉响应式布局这块 , 对最新的css3的知识掌握熟练程度以及移动端的经验 , 属于面试之中比较看重的一块 。 css3**现了很多的新的浏览器特性和效果 , 使用熟练程度之余还要知道它的兼容性 。
 
4.javascript基础 理解闭包的概念和用途 , 原型链和继承的概念 。 网络基本知识像HTTP协议 , Get/Post的区别与联系 。
 
5.前端与后端交互的数据格式Xml/Json等 进阶部分包括得熟悉使用javascript的流行mvvm框架(vue,angular,avalon等等)其中的一种到两种 , 构建工具(webpack,fis,gulp等等) , 以及系统后期的一个优化过程(包括静态资源压缩 , 合并 , 按需加载 , 分流)前端安全这块的知识 , 如跨域机制 , CSRF/XSS 漏洞等知识以及如何防范 。
 
D.客户端程序员
 
首先要对系统如何启动App , App如何运行有一个整体的了解 , 这里就包含App启动过程 , 沙盒机制的目的 , 实现原理等 。
 
1. 操作系统中进程与线程的知识点 , App怎样处理图片与外部网络资源 , 也要有一个整体的认识 。
 
2. App界面布局和交互的知识 。
 
3. 语言基础包含OC , Swift , 至少精通其中一种 。 对象的生命周期 , 面向对象思想 。
 
4. App界面知识点 , 自动布局 , 自开发组件 。
 
5. UIView, UIControl, UIScrollView, UIViewController 等核心类型的概念和关系 。
 
6. App屏幕旋转及屏幕适配 , 触摸、手势、加速计的使用 。
 
7.网络协议HTTP/TCP等基础知识 , Socket/CFNetwork/NSURLConnection等类的使用

8.代码管理如Git/Svn的使用 , 开发测试流程 , Bug管理 , 打包上架到苹果审核发布等知识 。

9.常用类库框架UIKit/Foundation/MapKit 。

10.热门技术如微信支付/友盟分享/第三方统计等的使用和注意事项 。

11.性能调优方面 , 内存泄漏、网络流量、耗电量方面的优化知识 , Analyze的使用 。
 

    成长性软实力
 
除了技术知识等硬素质 , 能驱动带来可持续成长的软素质同样重要 。 今日头条资深架构师夏绪宏提到 , 对候选人更看重:
 
1. 技术面与职位匹配 建议对照应聘的职位描述 , 做有针对性的准备 , 也让企业了解到你的用心;
 
2. 技术热情 对技术热爱 , 善于使用技术解决问题 , 有「技术思维」;
 
3. 学习能力 技术不可能一开始全部具备 , 更新迭代快的环境下需要保持不间断学习;
 
4. 沟通能力 团队协作需要能沟通顺畅、高效;真正在做项目时 , 如何正确、高效的与战友沟通非常重要 , 与学校中不同 , 在职场上更多是并肩作战;

推荐阅读