数据结构
二分查找,返回查询元素的索引
function binary_search(arr,low,high,key){
if(low > high){
return -1;
}
var mid = parseInt((high+low)/2);
if(arr[mid] ==key){
return mid;
}else if(arr[mid] >key ){
high = mid -1;
return binary_search(arr,low,high,key);
}else if(arr[mid] >key){
low = mid +1;
return binary_search(arr,low,high,key);
}
}
var arr = [1,2,3,4,5,6,7,8,9,10,11,27,44,86];
var result0 = binary_search(arr, 0, 13, 44);
console.log(result0);
写一个排序算法(快排)
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
内存中堆和栈的区别
0.申请方式和回收方式不同
1.申请后系统的响应
2.申请效率的比较
找一个数组中最长的连续递增的子区间长度[5,2,4,7,4,6,2]----->[2,3,6] = 3
利用动态规划来求解
求x的y次方
指数运算符
console.log((() => {
let x = 2;
let y = 3;
x **= y;
return x;})());
Math.pow():Math.pow(x, y)
前端部分
1. 用css3 实现一个未知宽高的div居中
1,组合使用display:table-cell和vertical-align、text-align,使父元素内的所有行内元素水平垂直居中(内部div设置display:inline-block即可
2,translate()函数是css3的新特性,在不知道自身宽高的情况下,可以利用它来进行水平垂直居中。
当使用:top:50%, left:50%,是以左上角为原点,故不处于中心位置。
translate(-50%, -50%)作用是,往上(X轴),左(Y轴)移动自身长度的50%,以使其居于中心位置。
3,用弹性布局实现垂直左右居中
display:flex; 设置.wrap为弹性布局
justify-content:center;定义项目在主轴(水平方向)上居中对齐
align-items:center;定义项目在交叉轴(垂直方向)上居中对齐
2. 写一段js继承的代码
/* ------------------原型链继承------------------ */
// 父类构造函数
function SuperType() {
this.property = true; }
// 父类原型方法
SuperType.prototype.getSuperValue = function () {
return this.property; }
//子类构造函数 function SubType() {
this.subproperty = false; }
// 子类原型对象指向父类实例实现继承
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function () {
return this.subproperty; } var sub = new SubType();
console.log(sub.getSuperValue());
/* ------------------原型链继承------------------ */
3. html+css定义一个三列的布局
1. 使用float实现三列左右固定宽高,中间自适应宽度
.left { float: left; 100px; background: red; }
.center { background: blue; margin-left: 100px; margin-right: 100px; }
.right { float: right; 100px; background: yellow; }
2.利用绝对定位
.main-left{
300px;
height: 500px;
background-color: #98FF1A;
float: left;
position: absolute;
left: 0;
}
.main-center{
background-color: #8E8DCC;
height: 500px;
}
.main-right{
300px;
height: 500px;
background-color:#7CC0FF;
float: right;
position: absolute;
right: 0;
}
3,flex布局实现
.left { 100px; background: red; }
.center { background: blue; flex: 1;}
.right { 100px; background: yellow;}
4. 页面优化的方法
- 避免head标签js堵塞
- 减少head里面的css资源
- 延迟加载图片,优化图片
- 去掉不必要的插件
- 最小化重定向
- 利用浏览器缓存
5. git和svn的区别
- SVN是集中式版本控制系统,版本库是集中放在中央服务器的
- Git是分布式版本控制系统,它没有中央服务器的,每个人的电脑就是一个完整的版本库。
- GIT把内容按元数据(中介数据,描述数据的数据)方式存储,而SVN是按文件
- git和svn是通过.git和.svn文件,.git只是在本地的版本库的目录下存在,而.svn存在于每一个文件夹,当我们不需要版本控制的时候,要删除.svn很费时。
6. 输入一个网址后,计算机是怎么处理的
DNS 解析:将域名解析成 IP 地址
TCP 连接:TCP 三次握手
发送 HTTP 请求
服务器处理请求并返回 HTTP 报文
浏览器解析渲染页面
断开连接:TCP 四次挥手