1.post、get的区别

get和post都是http协议中的两种请求方式 get一般用于获取数据,post一般用于传输数据

(1)GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

(2)get是传输数据大小有限制(最大8k),post没有

    http://127.0.0.1:8080/search?keyword=笔记本

(3)GET在浏览器回退时是无害的,而POST会再次提交请求

(4)GET请求只能进行url编码,而POST支持多种编码方式。

2.http状态码

200 - 请求成功

301 - 资源(网页等)被永久转移到其它URL

302 - 资源(网页等)临时转移到其它URL

304 - 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

3.对NodeJS的优点和缺点提出自己的看法?

答案:CPU密集型任务的特点是进行大量的计算,消耗CPU资源,比如计算圆周率(上千位)、对视频进行编码等, 全靠CPU的运算能力 (一般用C语言,java)

IOInput / Output)密集型任务,这类任务的特点是CPU消耗很少,大部分时间都在等待IO操作。常见的大部分任务都是IO密集型任务,比如Web应用(一般用脚本语言:python/Nodejs)。

Nodejs设计思想中以事件驱动、异步、非堵塞I/O密集型为核心,他提供的大多数api都是基于事件的、异步的风格。所以非常适合处理并发请求。此外,与Node服务器交互的客户端代码是由js语言编写的,因此客户端和服务器端都用同一种语言编写,减少了成本。

4.下列JavaScript执行后,依次alert的结果是()

(function test(){
  var a=b=5;
  alert(typeof a); // 'number'
  alert(typeof b); //'number'
})();
alert(typeof a); //'undefined'
alert(typeof b); //'number'

答案:'number'   'number'   'undefined'   'number'

5.以下代码输入的值

console.log(1);
setTimeout(function(){
  console.log(2);
},10);
setTimeout(function(){
  console.log(3);
},0); //html5中规定间隔的时候最小只能是4
console.log(4);

答案:1 4 3 2

6.数据库的多表查询

传统查询

Inner join(内连接):如果表中有至少一个匹配,则返回行 【在语法中可以省略INNER关键字】

Left join(左连接):从左表返回所有的行,如果右表中没有匹配,对应的列返回Null

Right join(右连接):从右表返回所有的行 ,如果左表中没有匹配,对应的列返回Null

Full join(全连接):只要其中一个表中存在匹配,则返回行(即结合左连接和右连接的结果)

union/union all

7.常用的git命令有哪些

代码管理工具有早期的 SVN和 现在的 GIT

目前使用的是 Git 工具管理代码. Git是一个开源的分布式版本控制系统。

Git工具的主要功能有:

暂存功能, 实现新旧代码的对比, 代码的回退 版本功能, 代码形成多个版本, 记录每日的工作, 快捷的版本回退. 分支功能, 能够互不影响的并行开发多个不同功能, 团队合作. 合并功能, 快速合并不同的分支 并 解决冲突 远程仓库, 通过码云和Github 实现代码的云存储. 快速进行团队合作

Git的常用命令有:

本地仓库

初始化: git init

暂存: git add 文件名 或 git add .

提交版本: git commit -m '版本描述'

分支: git branch

合并: git merge

远程仓库

克隆: git clone 远程仓库地址

更新: git pull (从远程仓库更新到本地)

上传: git push

8. 统计一个字符串中出现次数最多的字符是? 共出现多少次

答案:

var str = 'javascript';
var dict={};
var c="", max=1;
for(var i=0;i<str.length;i++){
  var char=str[i];
  if(dict[char]===undefined)
    dict[char]=1;
  else{
    dict[char]+=1;
    if(dict[char]>max){
      max=dict[char];
      c=char;
    }
  }
}
console.log(c,max);

8.express传参的方式有哪些

查询字符串 /detail?lid=5     req.query

路由传参   /detail/5        req.pramas

post传递,需要结合body-parser   req.body

9.var,let,const有什么区别

const必须初始化,而且不能更改

var仅在function是局部变量,其余都为全局变量;

let一直充当局部变量,即便是在if中,外界也不能访问

函数变量提升,提升也就是把定义的放在一段代码的最开头

var 的声明,存在变量提升。let  的声明,不存在变量提升。const  的声明,不存在变量提升。

for循环中,var定义相当于在for这一片区是全局的,所以值是最后一个;let是每个独立分开的,所以值不同

var可以重复声明,let不可以

10.null和undefined的区别

在JavaScript中,null 和 undefined 几乎相同

null 和 undefined 基本同义,二者又有什么区别呢?

null表示没有对象

1) 作为函数的参数,表示该函数的参数不是对象

2) 作为对象原型链的终点

undefined表示缺少值

1)定义了形参,没有传实参,显示undefined

2)对象属性名不存在时,显示undefined

3)函数没有写返回值,即没有写return,拿到的是undefined

4)写了return,但没有赋值,拿到的是undefined

null和undefined转换成number数据类型

null 默认转成 0

undefined 默认转成 NaN

在 if 语句中 null 和 undefined 都会转为false

两者用相等运算符比较也是相等

  null==undefined  //true

11.当前代码块输出结果是什么?

var z=10;
function foo(){
 console.log(z);  //10
}
(function(funArg){
  var z=20;
  funArg();//调用foo
})(foo); //传的是地址

答案: 10 

12.fs模块

fs模块是Node.js的一个核心模块,专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入

使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式。

异步是通过回调函数获取结果,同步是通过方法的返回值获取结果。

13.浏览器的内核有哪些

Trident-IE浏览器内核

blink谷歌浏览器

Gecko-火狐浏览器内核Mozilla

webkit-苹果浏览器内核

blink-Opera浏览器内核

14.数据类型有哪些

原始类型(单类型): String、Number、boolean、null、undefined。

引用类型:object。里面包含的 function、Array、Dat...

15.数组常用的方法

 toString()/join()/concat()/slice/splice/reverse()/sort()/indexOf()/lastIndexOf()/includes/forEach/push()/pop()/unshift()/shift()/map()/filter()/map()/every()/some()/reduce

16.以下代码执行结果?

var uname = 'jack'
function change() {   作用域链
    //var uname=undefined;
    alert(uname)  // undefined
    var uname = 'lily'
    alert(uname)  //?
}
change()

答案:undefined lily

17.  foo = foo||bar ,这行代码是什么意思?为什么要这样写?

答案:这种写法称之为短路表达式

相当于:

var foo;
if(foo){
    foo=foo;
}else{
    foo=bar;
}

常用于函数参数的空判断