头部背景图片
小畅的学习笔记 |
小畅的学习笔记 |

js数组操作

2019-08-19
#js
  • 传统的js数组方法: concat(),push(),pop(),shift(),unshift(),splice(),slice(),join(),sort(),reverse();
  • ES5新增数组方法: indexOf(),lastIndexOf(),map(),filter(),forEach(),some(),every(),reduce(),reduceRight();

Array.map()

此方法是将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组

let arr = [1, 2, 3, 4, 5]
    let newArr = arr.map(x => x*2)
    //arr= [1, 2, 3, 4, 5]   原数组保持不变
    //newArr = [2, 4, 6, 8, 10] 返回新数组

Array.forEach()

此方法是将数组中的每个元素执行传进提供的函数,没有返回值,直接改变原数组,注意和map方法区分

let arr = [1, 2, 3, 4, 5]
   num.forEach(x => x*2)
   // arr = [2, 4, 6, 8, 10]  数组改变,注意和map区分

二叉树的前序遍历、中序遍历和后序遍历

2019-08-19

1、概念

树是一种非顺序数据结构(节点,根节点,内部节点,外部节点,子树,深度)

节点包括(key left right)

二叉搜索树是二叉树的一种,左节点key值<父节点key值,右节点key值>=父节点key值

(1)前序遍历
a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。

(2)中序遍历
a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。

(3)后序遍历
a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。

HTML5语义化标签的理解

2019-08-18

语义化标签的好处要从HTML 全局属性说起,即有的标签有默认的HTML全局属性,所以最好用语义化标签。
引入语义化标签的好处主要有下列三点:

  • 比div标签有更加丰富的含义,方便开发与维护
  • 搜索引擎能更方便的识别页面的每个部分
  • 方便其他设备解析(如移动设备、盲人阅读器等)

1:以下元素支持 tabindex 属性:

<a>, <area>, <button>, <input>, <object>, <select> 以及 <textarea>。

用法:number规定元素的 tab 键控制次序(1 是第一个)。
作用:增强用户键盘的可操作性,所以不要用div代替
2:以下元素支持 accesskey 属性:

<a>, <area>, <button>, <input>, <label>, <legend> 以及 <textarea>。

用法:character规定激活(使元素获得焦点)元素的便捷按键。
作用:增强用户键盘的可操作性,所以不要用div代替

算法编程题

2019-08-16

本文总结了很多简单的算法编程:

  • 降维
  • 排序
  • 去重
  • 统计一个字符串出现最多的字母
  • 不借助临时变量,进行两个整数的交换
  • 找出下列正数组的最大差值
  • 随机生成指定长度的字符串
  • 实现类似getElementsByClassName 的功能
  • 判断一个单词是否是回文?
  • 找出最长单词
  • string 里的每个单词首字母大写
  • 判断字符串是否是指定字符结尾
  • 重复字符串指定次数
  • 找出字符串中出现最多的字符和个数
  • 创建一个函数判断给定的表达式中的小括号是否闭合
  • 在字符串中找出连续最长的数字串
  • 使用canvas 绘制一个有限度的斐波那契数列的曲线?
  • 实现阶乘
  • 过滤敏感词
  • 二分查找
  • App版本比较
  • 生成菲波那切数列
  • 使用JS 实现二叉查找树(Binary Search Tree)
  • 密码强度判断
  • 修改路由规则
  • 字符串大小写转换

跟着我一起学习吧~

面试宝典-Vue

2019-08-15

什么是MVVM?

MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和Model的对象(桥梁)。

在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

mvc和mvvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的viewModel。mvvm主要解决了mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。
区别:vue数据驱动,通过数据来显示视图层而不是节点操作。
场景:数据操作比较多的场景,更加便捷

面试宝典-前后端交互

2019-08-10

秋招季,总结一下前后端交互部分面经~

一. 跨域问题:

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
所谓同源是指,协议,域名,端口均相同。
注意:
如果是协议和端口造成的跨域问题“前台”是无能为力的;
在跨域问题上,域仅仅是通过“URL的首部”来识别

解决方案:

特别注意两点:
第一,如果是协议和端口造成的跨域问题“前台”是无能为力的,
第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。
1. JSONP方式解决跨域问题
script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
2. CORS解决跨域问题
对后台进行配置,例如:PHP端修改header,然后配置Apache web服务器跨域
3. 代理请求方式解决接口跨域问题
前端对接口进行代理:(前端ajax请求的是本地接口;本地接口接收到请求后向实际的接口请求数据,然后再将信息返回给前端;一般用node.js即可代理;)
详情参考https://segmentfault.com/a/1190000012469713

面试宝典-Javascript

2019-08-08
#js

秋招季,总结一下HTML部分面经~

一. JS作用域和作用域链

1. 作用域:

作用域就是变量和函数的可访问范围,或者说变量或函数起作用的区域。

  1. javascript函数的作用域:
    函数内的区域,就是这个函数的作用域,变量和函数在这个区域都可以访问操作。最外层函数外的区域叫全局用域,函数内的区域叫局部作用域
  2. javascript变量的作用域:
    在源代码中变量所在的区域,就是这个变量的作用域,变量在这个区域内可被访问操作。在全局作用域上定义的变量叫全局变量,在函数内定义的变量叫局部变量

2. 作用域链

作用域链(Scope Chain)是javascript内部中一种变量、函数查找机制,它决定了变量和函数的作用范围,即作用域。每个作用域都有一条对应的作用域链,链头是全局作用域,链尾是当前函数作用域。

3. 作用域链的作用

是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。

面试宝典-CSS

2019-08-03

秋招季,总结一下CSS部分面经~

一. CSS3盒子模型

  • 盒子模型
    IE 盒子模型和标准 W3C 盒子模型的范围包括 margin、border、padding、content
    使用“标准 W3C 盒子模型”:在网页顶部加上Doctype声明。
  • 在不同标准里width的区别
    在标准 W3C 盒子模型中,width指content部分的宽度
    在 IE 盒子模型中,width表示(content+padding+border)这三个部分的宽度
  • box-sizing
    box-sizing: content-box 是 W3C 盒子模型;content-box动态大小 | 受 “边框” “边距” 等属性影响
    box-sizing: border-box 是 IE 盒子模型;border-box固定大小 | 不受 “边框” “边距” 等属性影响

面试宝典-HTML

2019-07-23

秋招季,总结一下HTML部分面经~

一. 行内元素、块级元素、空元素举例

  • 空元素没有内容的HTML元素。
    空元素在开始标签中关闭的。(单标签)如:br、hr、img、input、param、meta、link
  • 行内元素:a、b、span、img、input、strong、select、label、em、button、textarea
  • 块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote

块级元素和行内元素区别

  1. 占据空间
  • 块级元素总是单独占一行,并从新的一行开始;
  • 行内元素和其他同为行内元素占据同一行。
  1. Width,height,Margin-padding是否可设置
  • 块级可以,行内不可以。
  • 通过改变元素的display可改变此属性。
  1. 宽度
  • 行内元素宽度与内容相关;
  • 块级元素不设置则与浏览器同宽。
  1. 容纳内容
  • 块级元素可容纳内联元素和其他块元素;
  • 行内元素只可容纳文本和其他行内元素。

flex布局-基本页面结构

2019-06-19

我们的目的是为了实现这样的布局:
Image1.png

Lililich's Blog