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)
IO(Input / 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;
}
常用于函数参数的空判断