前端面试 - JS篇

2026高频前端面试题(含答案) 一、简单页面 1、CSS选择器样式优先级 2、CSS实现三列布局(左右固定宽度,中间自适应) (1)CSS浮动 第一个float:left,第二个float:right,第三个设置margin-left和margin-right (2)绝对定位法 第一个定位到left,第二个定位到right,第三个设置margin-left和margin-right (3)flex布局 .left{ width:200px; 或者 flex:0 0 200px; } .right{ width:200px; 阅读详情

js

数据类型和计算

  1. 值类型和引用类型
  • 常见值类型
    string、num、undefined、boolean、symbol
  • 常见引用类型
    在这里插入图片描述
  • 值类型和引用类型存储区别
    值可以直接存储在栈中,如下
    在这里插入图片描述
    而引用类型存储如下:
    在这里插入图片描述
  • 堆和栈:(这篇文章介绍得很详细了)
    栈内存相当于一个水桶类型,入栈顺序先进后出

栈内存存储基本数据类型,堆内存存储引用数据类型
栈内存中自动分配空间和释放,但堆内存中变量不同,具体看下面垃圾回收机制;

  1. 浏览器的垃圾回收机制
  • 引用计数(ie8及之前)
    跟踪变量被引用次数,引用一次+1,释放-1,当引用次数为0时即可回收
    缺点:
    循环引用时会出问题
  • 标记清除(目前主流浏览器使用)
    当变量进入执行环境时,这个变量标记为“进入环境”;而当变量离开环境时,则将其标记为“离开环境”,垃圾回收器销毁并回收那些被标记为“离开环境”的值所占用的内存空间
    缺点:
  • v8垃圾回收策略
    采用分代回收策略,将内存分为新生代和老生代
    新生代空间中的对象为存活时间较短的对象,大多数的对象被分配在这里,这个区域很小但是垃圾回特别频繁
    老生代空间中的对象为存活时间长或常驻内存对象,大多数从新生代晋升的对象会被移动到这里
  1. 实现深拷贝
  • 循环+递归
  • JSON.stringify与JSON.parse结合
function deepClone(obj){
    let _obj = JSON.stringify(obj),
    objClone = JSON.parse(_obj);
    return objClone
}    
let a=[0,1,[2,3],4],
    b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
  • 函数库lodash
    该函数库有提供 _.cloneDeep 用来做 Deep Copy

  • 借用JQ的extend

let a=[0,1,[2,3],4],
    b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
  1. 防抖节流
    防抖是指 一定时间,连续触发,只在最后一次触发
let deBounce = (fn, delay) => {
    let timer = null;
    return function (...args) {
        if (timer) {
            clearTimeout(timer);
        }
 
        timer = setTimeout(()=> {
            fn(...args);
        }, delay)
    }
}

节流是指 时间持续触发时,在一定间隔时间内触发

let throttle = (fn, delay) => {
    let flag = true;
    return function (...args) {
        if (!flag) return;
        flag = false;
        setTimeout(() => {
            fn(...args);
            flag = true;
        }, delay)
    }
}
  1. 类型计算
  • 包含字符串的计算(需注意)
    在这里插入图片描述
let a= '5' - '3';
let c = '' + 1;
let d= false - true;
let e = null + 1;
let f= [] - [];
let g= [] + [];
console.log(a,b,c,d,e,f,g)
  • 类型转成字符串
    String(value);
    ‘’ + value;
    value.toString()

  • 类型转成数字
    Number();
    ‘’ - value;

  • == 和 === 使用
    除了判断null时使用= = ,其他情况都用 ===

  • falsely变量和truely变量(一个变量双重否定后是true或false来判定)(误区:if判断,truely变量即进入if,falsely变量则进入else)在这里插入图片描述

  • && 和 ||
    &&返回falsely变量
    ||返回truely变量

  1. 数组、字符串一些常用函数:看这里
  2. 数组去重、扁平化的一些方法

js原型和原型链相关知识(重要)

  1. 类型判断
  • 平常还有哪些其他判断数据类型的方法呢
  • typeof: typeof 1
    可以判断所有的值类型;可判断函数;可判断是否是引用类型(但不能具体分辨那种类型)
  • instanceof(原理,判断前者的_proto_原型链上是否存在后者的prototype原型对象)
    可判断一个变量是否是Array但是需注意:不能判断简单的数据类型。 还有isArray可以判断是否是数组
    [] instanceof Object 结果也是true,所有的引用类型使用instanceof Object都是true
  • (value).constructor.name,多重继承时会出错,在有原型时出错
  • 推荐:object.prototype.toString.call() 返回格式为[Object, 真实类型];(可以检测所有类型,但不能检测自定义的具体类型)
  • 推荐:Array.isArray()
  • jquery.type
  1. 原型和原型链(是我看到最清晰的解释了)

闭包(重要)

  1. es6语法新特性(具体的文章多处地方都提到了,我就不展开说了)
  • let、const、var区别
  • 模板字符串
  • promise
  • 增加箭头函数
  • Map、Set等新的数据类型
  • 解构赋值
  • 函数默认参数
  1. 作用域问题
  • 变量提升
    var声明的变量作用域为函数作用域,会将变量定义提升至函数作用域顶部,函数声明也会有提升,且函数提升优先级高于变量提升,
  • 块级作用域
    在指定的作用域外无效,位于一对花括号之内,使用let和const声明变量
    使用var声明的变量,在其函数体及其嵌套函数体中都可以访问
  • 暂时性死区
    如下图,从块级作用域顶部到let语句之间的部分称为暂时性死区,如果没有let,则不会形成暂时性死区
    在这里插入图片描述
    大家能准确描述出let、const、var的区别,则就对2中的问题完全掌握
  1. 自由变量
    自由变量的查找,是在函数定义的地方,向上级作用域查找,而不是在调用的地方
  • 闭包指访问了其它作用域中的变量的函数
  • 闭包的应用(可以类比到vue的data是个函数)
    在这里插入图片描述
    使属性不能直接访问,只能通过get方法获取
  1. this的应用场景 (this取什么值,是在函数调用的地方确定,而不是在定义的地方确定)(与闭包相反)
  • 普通函数调用(window)
  • 使用call、bind、apply等(传入什么,this就是什么)
  • 作为对象方法调用(对象本身)
  • 作为构造函数被调用(调用的实例)
  • 箭头函数(没有自己的this,上级作用域的this值)
  1. 箭头函数与普通函数区别
    在这里插入图片描述

  2. call、bind、apply区别

  3. 如何判断函数是构造函数还是普通函数
    当以构造函数调用时,new.target 等于构造函数本身

异步(重要 )

  1. promise的链式调用及一些注意点
    在这里插入图片描述
    promise.all和promise.race
  2. require和import区别
  • require/exports 是运行时动态加载,import/export 是静态编译,所以import无法在函数内部使用,所以一般都在顶部
  • require/exports 输出的是一个值的拷贝,import/export 模块输出的是值的引用
  • import会有提升
  1. 异步使用场景
  2. async/await
    async会返回一个promise对象;
    await相当于promise的.then方法,若promise失败,则await不会触发,需要借助于try…catch捕获;
    async原理:是一种语法糖,是generator函数和promise共同实现的,因为async最后会返回promise,所以最后肯定后return 一个promise,promise中会递归调用generator函数(由next.done来判断是否结束)
  • 执行顺序:对于await后面的内容,都是异步执行(即类似前面提到的event loop中的setTimeout)
  1. event loop(DOM事件也使用回调,也是基于event loop)
    * 浏览器的event loop机制
    这里先给大家看个模拟的运行机制吧
    在这里插入图片描述

再配合下图讲出即可
在这里插入图片描述

在这里插入图片描述
* node 的event loop 机制
在这里插入图片描述
整体来说,两者区别为:
浏览器和 Node 环境下,微任务队列的执行时机不同

Node 端,微任务在事件循环的各个阶段之间执行
浏览器端,微任务在事件循环的 宏任务 执行完之后执行

  1. 宏任务和微任务区别
    宏任务:setTimeout、Ajax、等,发生在DOM渲染之后
    微任务:Promise、async/await等,发生在DOM渲染之前
  2. 宏任务、微任务触发时机解释
    在这里插入图片描述
  3. 设计模式
  • 设计原则
    在这里插入图片描述
    创建
  • 工厂模式:应用场景,创建成功、失败、警告等不同颜色、icon的弹框实例
  • 建造函数:应用场景(常见于初始化),编辑器初始化、vue初始化,首先创建一个简单的vue实例,然后把生命周期、事件、数据、模板渲染这些混入其中
  • 单例模式:应用场景,vue-router
    提高代码复用率
  • 享元模式,把公共部分提取出来,共同使用
  • 模板方法模式,先实现一个最基础的版本,再针对不同需求在基础版上实现
    提高代码可扩展性
  • 适配器模式-接口
  • 装饰者模式-方法内容
前端面试之JavaScript篇 之前准备面试的时候整理的,希望能带给大家一点帮助~ 目录js为什么是单线程,有什么好处?js异步加载的方式Microtasks、Macrotasks(事件循环event loop、任务队列task queues)原型和原型链构造函数、原型、实例的关系new的基本原理(当let fun = new Fun()时发生了什么?)继承prototype和__proto__的关系typeof和instanc... 阅读详情

相关推荐

2021前端面试经常被问到Javascript+HTML5+CSS+框架问题(89篇资料总结)

我经常会看到很多同学在学习前端的时候比较迷茫,不知道到底应该以怎样的学习路线来入门和进阶前端领域。作为程序员,肯定是不能容忍重复无味的劳动的,因此我就系统地总结分享一下前端精选学习资料,本文为「前端进阶」部分,希望对你能够有所帮助。 今天给大家分享89篇【前端】精选学习资料,其中不仅详细讲解了Javascript、HTML5、CSS、前端框架等知识点,也同样包含了大量各大厂的面试原题。同时还有6本学习前端必读好书,扫码即可获取,限额100名! 同时,对于前端基础掌握不牢固的小伙伴们,我们推出了C站软..

优快云能力认证官方博客 1万+

前端面试题及答案汇总

闭包是能够读取其他函数内部变量的函数要理解闭包,首先必须理解Javascript特殊的变量作用域闭包的特性:1.封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;2.持久性:一般的函数,调用完之后,系统会自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包依然存在。1.创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。2.属性和方法被加到this引用的对象中。

盼盼盼的博客 6万+

【Web前端面试】葵花宝典(2022版本)——JS篇(上)

本篇文章主要写的是前端高频面试题JavaScript篇(上),下下一篇我会更新相关面试题。如果没有的话,下一篇预备更新 前端高频面试题JavaScript篇(下)误区:我们经常说 get 请求参数的大小存在限制,而 post 请求的参数大小是无限制的。 实际上 HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对 get 请求参数的限制 是来源与浏览器或 web 服务器,浏览器或 web 服务器限制了 url 的长度。..................

qq_49002903的博客 3504

2024前端面试宝典(初级简洁版)

2023最新面试流程问题总结,适用于初入职场的web前端宝宝们,大部分问题都是用最精简的回答帮大家整理好了,重点问题一定要弄明白原理,可以用自己的话表达出来即可。面试在于积累经验,每次面完总结不足的地方,多面多总结,你会发现新的自己哦,加油加油~~

outsider76557的博客 7077

2023前端大厂面试题之JavaScript篇(1)

js中的同步和异步 异步编程的实现方式 回调地狱 JavaScript this 关键字 JavaScript中基本数据类型和引用数据类型的区别 原型 原型链 原型链面试题 原型继承 防抖和节流 宏任务与微任务 宏任务与微任务面试题......

zag666的博客 6655

2023前端大厂面试题之JavaScript篇(4)

严格模式use strict JavaScript this 关键字 call、apply和bind map 和 weakMap 的区别 js 延迟加载的方式 js的模块化规范 JavaScript多态 JavaScript中常见设计模式 冒泡和捕获 JS 单线程的好处 路由懒加载 js 垃圾回收机制 js释放变量内存 哪些操作会造成内存泄漏

zag666的博客 836

前端面试题汇总大全!

本文包含 js、html、css、vue、react、webpack、微信小程序、等等技巧题!!!

范德萨的博客 1万+

2023前端大厂面试题之JavaScript篇(2)

JavaScript数据类型 null和undefined的异同点? undefined做标识符 如何获取安全的 undefined 值 [] == ![] 为什么是 true const 定义的值一定是不能改变的吗? JavaScript判断数据类型的方法 typeof typeof null 为什么返回的是 'object' instanceof 如何实现一个 instanceof ? 判断数组的方式有哪些 NaN是什么?有什么特点? 0.1 + 0.2 !== 0.3 let、const、var

zag666的博客 2599

前端面试必备知识点总结

这篇博客是对前端面试所必须掌握的知识点的总结,并且这篇博客正在持续更新中… 1.JavaScript 基础 1.执行上下文/作用域/闭包 1.什么是执行上下文? 执行上下文是评估和执行JavaScript代码环境的抽象概念。每当JavaScript代码在运行时,他都是在执行上下文中运行。 执行上下文的类型 JavaScript共有三种执行上下文类型 全局执行上下文 这是基础的上下文,任何不在函数内部的代码都在全局上下文中.他会执行两件事:创建一个全局的window对象(浏览器环境的情况下),并且设

zzming的博客 6649

别再只盯着CXL协议了,聊聊CXL.mem里那个能动态调优内存性能的‘QoS遥测’到底怎么用

本文深入解析CXL.mem协议中的QoS遥测功能,探讨如何通过DevLoad指标动态调优内存性能。文章详细介绍了QoS遥测的核心机制、多QoS类别设备的实战配置,以及AI训练、金融交易和视频处理场景中的优化案例,帮助数据中心实现高效内存资源管理。

weixin_33725722的博客 436

详细介绍pytorch重要的API

Tensor 是 PyTorch 中最基本的数据结构,提供了多种创建和操作张量的函数。Autograd 提供了自动求导功能,可以跟踪 Tensor 上的操作并计算梯度。损失函数用于衡量模型预测值与真实值之间的差异,提供了多种损失函数。是构建神经网络的基础类,提供了定义网络层和前向传播的方法。提供了 GPU 计算的支持,包括设备管理、内存管理等。提供了一些常用的函数式操作,如激活函数、损失函数等。提供了常用的数据集、模型架构和图像转换工具。提供了数据加载和预处理的工具,包括。

hello! 1223

第 4 节:前端面试指南 — JavaScript篇

终于更新啦,刚更新完「CSS篇」之后,很多读者朋友都在微信催更「面试指南」系列的第 4 期 — JavaScript篇。前 3 期没看的同学,建议先看完再来看这一期的,传送门:第 1 节:...

qq_24520459的博客 366

紫光同创PGL50H开发板实战:盘古50KH视频板的多媒体处理与高速通信方案

本文详细介绍了基于紫光同创PGL50H FPGA芯片的盘古50KH视频开发板在多媒体处理与高速通信方面的实战应用。文章从开发板硬件架构解析入手,逐步指导开发环境搭建、DDR3内存控制器配置、HDMI视频输入输出实战,并重点探讨了利用板载HSST高速收发器实现光纤通信与万兆以太网的方案。最后,通过构建一个集多路视频采集、处理与光纤传输于一体的系统案例,展示了该开发板在高性能实时数据处理领域的强大潜力。

b9c0d的博客 485

「2024」前端高频面试题之JS篇(一)

前端高频面试题之JS篇,概述:JS8种数据类型及两种数据类型的区别,数据类型的检测方式,JS为什么要进行变量提升,闭包

m0_37489258的博客 1660

DeepSeek-V3本地Docker容器化部署

通过以上步骤,你可以在本地上成功通过容器化部署DeepSeek-V3。安装完成后,启动Docker Desktop。如果需要后台运行,可以加上。

u013302168的博客 2123

【教程4>第4章>第12节】通过FPGA实现基于FFT变换的频偏估计和补偿

基于FFT变换的频偏估计和补偿,其基本原理如下:而频偏补偿的目的是将频偏后的信号频谱移回原来的位置。

FPGA/MATLAB学习教程/源码/项目合作开发 882

【前端面试】JS篇

本文档是一份全面的 JavaScript 面试知识点摘要。内容从作用域、闭包、this 指向、原型链等基础概念,到事件循环、Promise 与 async/await 等异步编程模型,再到垃圾回收、内存泄漏、模块化等进阶主题,均进行了系统梳理。它还涵盖了 ES6 新特性、常用设计模式和性能优化技巧,是巩固和复习前端核心知识的实用指南。

写写写写到厌倦~ 1232

COMSOL有限元仿真深度指南:连接薄结构与实体结构(I)

COMSOL有限元仿真深度指南:如何在结构力学仿真中连接薄结构与实体结构?

忘了面孔的Batou 1万+

「2024」前端高频面试题之JS篇(二)

2024前端高频面试题之JS篇(二),概述:原型,原型链,作用域,作用域链,事件循环,事件委托,JS底层运行机制,this,undefined和null区别,var、let、const区别,进程,线程,CPU等

m0_37489258的博客 1786

Android 编译系统(Build System)剖析

make是一种自动化构建工具,通过读取Makefile将源代码自动编译为可执行程序和库文件。

虎哥LoveDroid 2169

机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2002

前端面试题之JavaScript篇

前端面试题之JavaScript篇一、数据类型1. JavaScript有哪些数据类型,它们的区别?2. 数据类型检测的方式有哪些3. 判断数组的方式有哪些4. null和undefined区别5. typeof null 的结果是什么,为什么?6. intanceof 操作符的实现原理及实现7. 为什么0.1+0.2 ! == 0.3,如何让其相等8. 如何获取安全的 undefined 值?9. typeof NaN 的结果是什么?10. isNaN 和 Number.isNaN 函数的区别?11. =

爱是与世界平行 8941

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

前端面试宝典总结4-手搓代码JavaScript(基础篇)

前端面试手写代码JavaScript,#手写 instanceof 、类型判断、call , apply、 bind 、防抖、 节流、 Object.create、 new 操作符 、Promise 、深拷贝、 波那契数列

weixin_45511682的博客 1380

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【2025前端面试题总结】JavaScript 篇

【2025前端面试题总结】JavaScript 篇

2301_76769195的博客 2231

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【面试】前端面试之JS篇

【面试】前端面试之JS篇

kikikiuu的博客 1028

web前端面试高频考点——JavaScript 篇(一)【JS的三座大山 】 原型和原型链、作用域和闭包、异步

web前端面试高频考点 —— JavaScript 篇(一)【JS的三座大山 】 变量类型和计算、原型和原型链、作用域和闭包、异步(直击重难点,修炼内功必备)

HuoZhiyan 的博客 2847
上一篇: 前端面试知识 - HTML、CSS篇
下一篇: webStorm的一些快捷键
gegephp
博客等级 码龄8年 33粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值