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


2.数据结构和基本算法清楚特定的基础数据结构的可以处理的问题,如果已经知道这些算法,那可以跳过很多耗时的技术选型阶段,这就是知识的广度带来的优势 。
3.网络协议知识TCP/IP等网络协议知识,到应用层的HTTP/HTTPS等,对这些协议的深入理解,可以解决web页面在移动网络下的访问耗时长等疑难杂症,提出优化方案 。
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的使用 。