前言

写这篇文章的目的是,当我试图去找实习时,发现面试官要求中有很多技术都不懂,甚至没听说过,于是决定将一些常见的编程技术搞懂并记录下来

这篇文章的受众是,做过一个编程项目的,这样你才能有种切身的感觉;当然纯小白也可以看,只是有些内容是默认你有编程知识的,可能有些晦涩

基础编程知识

编程语言和脚本语言

编程语言

概念:用来定义计算机程序的形式语言,是一种将程序员所定义的代码,编译即翻译成计算机所认识的二进制代码的工具

区别:1.静态语言,一旦运行无法更改代码,除非停止程序

2.需要编译器编译后执行

3.具有系统性,规则强可以编程出简洁美观的代码,易读。但需要系统学习才能掌握

脚本语言

概念:是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言

区别:1.动态语言,可以实时更改代码

2.不需要编译器,只需要解释器即可执行

3.可以减少开发的时间,简单易学。但缺乏系统性而且语法较为散漫

总结

1.编程语言需要编译器,具有系统性。脚本语言需要解释器,简单易学

2.编程语言是静态的,只能当程序停下后修改代码。脚本语言是动态的,可以实时修改代码

3.随着技术的发展,其实脚本语言变得越来越强,和编程语言的界限也比较模糊,比如Python,可以将它视为编程语言了,因为它很强大

4.你只需要清楚静态语言动态语言编译型语言解释型语言的区别即可

5.另外有一种半编译型语言,比如C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码

6.Java也是一种特殊的语言,它是经过先编译,后解释的过程

7.广义的编程语言=狭义的编程语言+脚本语言;通常情况下,我们说的编程语言是指广义的编程语言

强类型与弱类型语言

强类型

概念:强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型

eg:C/C++、Java等属于强类型语言

弱类型

概念:弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过现行强制转换

eg:Python、JS等属于弱类型语言

接口与API

接口

概念:定义一个标准的入口然后供后续子孙继承使用。通俗来说,就是定义一个模板,当继承这个接口后,自动具有接口的特征

作用:1.使项目分离,面向接口开发,项目易维护

2.实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节

API

概念:也可被称为接口,本质上是一个函数;通过接收不同的值,来返回相应的数据

作用:1.当需要使用API时,必须遵守API提供方的规则

2.不需要看实现某功能的源码,只需要知道向API提供哪些值就行,大大简化应用开发;同时也易于维护

3.允许两个不相关的程序互相通信

总结

1.接口包含API,API属于接口

2.两者本质上都是为了避免重复造轮子而存在的

其他

技术栈

概念:技术栈(Tech Stack)是指在软件开发过程中所使用的各种技术和工具的集合,包括编程语言、开发框架、数据库、操作系统、云服务等等。

中间件

概念:与业务无关的技术类组件,做各个服务中连接问题;通俗来讲就是不需要我们自己开发代码,通过第三方工具来实现功能,那么此工具就是中间件

Ps.狭义上的中间件是指介于操作系统和业务应用程序之间,利用操作系统的能力, 为一个或者多个应用程序提供基础服务的软件,例如数据库

作用:中间件,一直都是为业务应用程序服务的,它不直接服务于业应用程序的用户,用户也感知不到它的存在;例如从某某网站获取数据到本地,再展现给用户,那么从某某网站获取数据使用的技术就是中间件

高内聚低耦合

高内聚概念:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码;如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高

低耦合概念:如果模块之间联系越低,即独立性高,则耦合性越低

eg.一个项目中有20个方法调用良好,但是要修改了其中一个,另外的19个都要进行修改,这就是高耦合!独立性太差!

作用:使程序模块的可重用性、移植性大大增强

Web框架

前端框架

概念:也称Web前端框架;前端框架是包含预先编写好代码的工具集,可以高效开发前端页面

常用:Vue、React、Angular

Vue

概念:全称Vue.js,是基于JavaScript 的前端框架

作用:提供声明式、组件化的模型,可高效开发前端页面

核心:

1.渐进式框架(一开始不需要你完全掌握它的全部功能特性,可以后续逐步增加功能。没有多做职责之外的事情)-->即用即学

2.API选择(即书写vue代码的方式):

选项式(适合小项目):优点:简单易上手
缺点:代码组织性差,难维护
组合式(适合大项目):优点:代码组织性强,易维护
缺点:学习成本高

后端框架

概念:帮助开发者在后端逻辑中生成动态的HTML页面,并与前端进行交互;例如GET/POST等功能

常用:Java的Spring Boot、Python的Django、C#的ASP.NET core、Ruby的Rails、PHP的Laravel

Django

概念:基于Python的Web 应用框架,采用MVC模型的设计模式

优势:1.由于其计算和统计功能,它在机器学习和AI领域占据了主导地位

2.包含电池,可以使用现成的软件包来添加功能,可以专注于添加高级功能

3.MVC设计模式,简单易懂

Q&A

Q:什么是MVC设计模式?

A:Model(模型)+ View(视图)+ Controller(控制器),通俗来说就是使用Model加载数据库,使用View设计前端页面,使用Controller设计后端逻辑

Ps.需要注意的是,有些框架是前后端不分离框架,即有些Web框架既可以开发前端也可以开发后端 常用:Python的Django、Java 的Spring MVC、PHP 的Laravel

数据库

分类

1.SQL(关系型数据库)

MySQL、SQL Server、Oracle

2.NoSQL(非关系型数据库)

a.键值数据库[常用于内容缓存、频繁读写]:Redis、Memcached

b.文档数据库[常用于存储爬取的数据]:MongoDB、ES

c.列族数据库[可扩展性强,查找速度快]:Bigtable、HBase

e.图像数据库[社交网络、推荐系统,专注构建关系图谱]:Neo4j、InfoGrid

编程语言

这里不介绍C/C++、Java类似的常用语言

常用:JS、TypeScript、Ruby、Go、PHP

JS

概念:全称JavaScript,一种脚本编程语言,可以在网页上实现复杂的功能

作用:1.JS与HTML+CSS常用于开发网页

2.在浏览器中的 JavaScript 可以做与网页操作、用户交互和 Web 服务器相关的所有事情

3.与Node.js结合可以实现在服务端运行

学习JS推荐教程:JavaScript算法

TypeScript

概念:TypeScript是JavaScript的严格语法超集,提供了可选的静态类型检查

作用:1.由于JS可以开发很多复杂的项目,但JS缺乏可靠性。为了增强JS,则开发了TypeScript

2.TypeScript可以编译成纯JavaScript代码

学习TypeScript推荐教程:阮一峰大神

Ruby

概念:一门纯粹的面向对象编程语言(脚本语言)。发明者致力于”试着让Ruby更自然,而不是更简单,让一切符合生活常规“

作用:1.面向人话的语言,十分易用

2.可以开发Web框架,即Rails

Go

概念:全称Golang,语法接近C语言,但支持垃圾回收功能;其性能强劲,高并发,适合开发巨型项目

作用:1.应用于搭载Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率;适合游戏服务端开发

2.现阶段Golang被用于开发其云计算相关产品

PHP

概念:是一种服务器端脚本语言;主要是根据指令动态生成HTML文件

作用:可以快速创建动态网页

Q&A

Q:PHP是做前端还是后端?

A:php本质上是做后端(服务端),只是在html中嵌入php代码,通过后端实现代码的逻辑

Q:怎么理解PHP,它是一个后端框架吗?

A:可以把php当作C#,它们都是编程语言;而PHP在html中的嵌入,相当于C# .net的Razor视图的嵌入,都是需要从后端返回数据到前端的;

同时PHP只是一个编程语言,它也有特定后端框架,如Laravel,而C#也是,它的后端框架可以是ASP.net MVC

常用技术

Git

概念:适用于团队协作开发的版本控制系统

作用:1.方便不同团队成员编写的文件的整合,极大增加团队的协作效率

2.便于脱机(离线)工作

Docker

概念:容器技术,可以一键创建或配置环境

作用:1.可以消除不同机器间的环境配置问题

2.不影响本机环境,相比虚拟机更加的轻便和方便传播

#其他:

Node.js

概念:Node.js是JavaScript 运行环境,使开发者可以在服务端运行JS;同时它是跨平台的,使JS不局限于浏览器,可以在GUI程序上使用

作用:让JS可以在不同环境执行

Q&A:

Q:为什么要将JS在服务端上运行?

A:因为JS不只是脚本语言,它是一门编程语言,可以用来开发后端(如PHP)。具体可查看:世界上被人误解最深的编程语言

Q:什么是GUI?

A:GUI即图形用户界面,简单来说就是类似QQ的界面就是GUI;手机上APP的界面也是GUI。也就是说通过Node.js,可以使JS在这些上面运行。

Ajax

概念:Ajax不是一个编程语言,而是一个实现异步交互的方法

作用:1.通过异步交互,不需要等待返回,可以随时发送下一个请求;实现不刷新页面,局部信息更新

2.Ajax不是一个具体的某种方法,而是只要JS调用异步通讯组件并使用格式化的数据来更新web页面上的内容或操作过程,那么我们用的方法就可算是Ajax

Q&A

Q:Ajax通俗理解是什么?

A:可以理解就是,以前更新信息必须要刷新整个页面,而现在只会刷新局部页面;可以减少服务器资源的占用

Q:什么是同步?什么是异步?

A:同步交互,就是指发送一个请求,需要等待返回,然后才能够发送下一个请求;异步交互,就是指发送一个请求,不需要等待返回,随时可以再发送下一个请求

jQuery

概念:jQuery是JavaScript 的函数库,其宗旨是”写得更少, 而做得更多“

作用:1.消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写Ajax等代码

2.优化了JS的操作,不需要复杂的JS代码

REST

概念:是一种基于Web服务的软件架构风格,而不是标准;它是指用URL定位资源、用HTTP动词(GET,POST,DELETE,DETC)描述操作的一种方法

作用:1.前后端接口会用到

2.REST中文名为表现层状态转移,通俗来讲就是资源在网络中以某种表现形式进行状态转移

3.总结:

看url就知道要什么
看http method就知道干什么
看http status code就知道结果如何

RESTful API

概念:简称REST API,是一种符合REST风格的接口设计规范

作用:1.约束API接口的输入与输出,使它们更易读、易维护

2.RESTful API遵循安全、可靠和高效的软件通信标准

Q&A

Q:URI、URL、URN是什么?

A:URI是统一资源标识符,用来标识网上资源的,相当于有了URI之后,就可以找到该资源;URI包括URL(定位符)和URN(名称)这两大类;任何东西,只要能够唯一地标识出来,都可以说这个标识是 URI ;

URL是统一资源定位符,指一个给定的独特资源在 Web 上的地址

URN是统一资源名称,顾名思义就是指 Web 上资源的名称

URI关系图

Q:http method是什么?

A:method是方法的意思,简单来说就是 增删改查 等操作http资源的方法

Q:举个例子呢?

A:假设我们有一个friends接口,现在进行删除操作:

使用REST风格:URI: generalcode.cn/va/friends 接口类型:DELETE

不使用该风格:URI:generalcode.cn/va/deleteFriends

也就是说在URI上不使用deleteFriend,而是直接使用friends,通过接口类型判断操作

MQ(消息队列)

概念:一种进程间的通信方式;通过异步方式来处理数据,减少同步等待时间

作用:异步、削峰、解耦

详细了解:敖丙

XML

概念:是可扩展标记语言,主要用于数据的传输

作用:1.通常被用作描述内容,用于结构化的数据

2.可以理解为类似JSON的用作传输数据的语言

文章作者: Romcere.
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Romcere.
技术分享 编程技术
喜欢就支持一下吧