一、技术认知
如果一项技术,在开发中经常会用到,那么就要加深对技术原理的认识,能够讲出具体的原理和技术细节,最好能讲一两个小时,而不是一两句话就带过。
另外,一项技术,就算自己工作不需要,不懂得具体的技术细节,也可以尝试着去认识这项技术的应用范围、优势、思想。
作为一名开发者,一定要不断地拓宽自己的技术视野。
技术的本质是用来解决问题。
0.语言用途:
(注:Windows桌面软件开发的工作已经很少了,JavaME被淘汰了)
1.大数据
应用:
分布式系统,处理海量数据,进行运算和存储
技术要点:
Storm、Spark、Hadoop(框架),MapReduce(负责计算),Hdfs(文件系统),Hive(数据仓库),Hbase(数据库),Zookeeper(中间件),Ambri(可视化,配置集群)
2.安卓开发
目前还出现了RxAndroid(响应式编程)、webFlux
技术要点:
开源框架,网络编程,json和xml解析,绘图原理,动画,事件机制,自定义View,数据存储,开源框架,
四大组件原理,UI控件(RecycleView,TabLayout等),Material Designs
3.web前端
前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。
前端基础:js,html,css,jquery,bootstrap,node.js。
jquery有点过时了。现在比较流行的前端三大框架: vue,angular,react
4.web后端
后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。
python,java都可以做后端。也有少数公司用c/c++。
大后端,目前很流行分布式、微服务、容器。
python后端,一般用flask、django。
5.PHP
一般小公司刚起步,都会采用LAMP架构。也就是 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python
PHP适合产品刚起步,快速开发,做出产品雏形,看能否适应市场。
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
6.云计算
7.区块链
8.人工智能
9.游戏开发
一般用c++。引擎有cocos2d,工具unity3d、openGL。
三、Web技术及概念:
1.Web Services :可以将应用程序转换为网络应用程序
2.Soa : 面向服务的架构
3.工作流: 在现实中好多公司、政府、军工单位中审批业务流程是频繁变更的。
工作流是为解决现实中繁杂多变的业务审批流程,应运而生的一种技术。
常用的工作流:Jbpm、osworkflow、activiti
4.RPC:远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
5. MVVM框架:主要包括三个部分Model、View和ViewModel,Model指的是数据部分,对应到前端就是一些Javascript对象,View指的视图部分,对应到前端就是DOM,ViewModel就是连接数据和视图的中间件,在MVVM的框架下视图和数据是不能直接通信的,它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。以上便是MVVM的一些基本概念。
MVVM框架,如Angular、React、Vue
三、疑惑:
1.如何统计和处理百万、千万级别的数据?包括计算、排序、分组等操作。
2.处理海量数据,如何提高性能,包括运行速度,准确率等等?
3.内存泄露,是怎么产生的?如何处理?
4.网络是怎么连接的?
5.RxJava是什么?
6.DDos攻击。具体是什么?
就是成百上千台计算台,同时发起攻击。
7.Sql注入,是如何做到的?
8.Tcp三次握手、Udp五次握手的具体细节。