2019第一次前端面试总结

本文记录了一次阿里巴巴前端开发岗位的电话面试过程及面试题目解析,包括BFC概念、元素居中方法、闭包原理及应用、事件冒泡与捕获机制等核心知识点。

仅向几家公司投递了简历,都没有回应,意外收到了阿里的面试通知,是电话面,慌的很(本以为做了素质测评才会收到面试通知。。。),匆匆准备了俩小时就开始面试了,结果可想而知(年少无知啊)。

===========================================================================================

还是看一下面试题吧。

一、BFC

BFC(块级格式化上下文)

 

二、 有一个未知宽高的元素,要求在页面上水平垂直居中

有一个未知宽高的元素,要求在页面上水平垂直居中

三、闭包

(1)闭包的概念

     首先要理解JavaScript的独特的变量作用域。

     JavaScript的变量分为局部变量和全局变量,在函数内部可以直接访问全局变量,但是函数外部却不能直接访问函数的局部变量,但是出于需要,有时要获取函数内部局部变量,可以在函数内部再定义一个函数func,让func作为子函数,函数的局部变量对于其子函数是完全公开的,也就是说子函数可以访问它的全部变量,但是函数无法访问子函数的内部变量,这就是链式作用域结构。子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

闭包就是可以读取其他函数内部变量的函数,是连接内部函数和外部函数的桥梁。

(2)在开发过程中什么环节使用闭包

        当需要读取函数内部的局部变量或者不使变量的内存在使用之后立即销毁时,要使用闭包, 在实际开发中,闭包主要是用来封装变量,收敛权限

// 封装变量,收敛权限
function isClosure() {
        var list = []
        return function(option) {
            if(list.indexOf(option)!==-1) {
                console.log("已存在")
            } else {
                list.push(option)
                console.log("首次存入")
            }
        }
    }
    var f1 = isClosure();
    f1("a")
    f1("b")
    f1("a")

(3)针对内存泄漏的解决方案

    内存泄漏的概念 不再用到的内存,没有及时释放,就叫做内存泄漏。

    使用闭包有优点,可以访问函数内部的局部变量,也可以使内部变量一直保存在内存中,不会再内部函数调用后直接被销毁;

缺点也很明显,因为内部变量的值一直保存在内存中,会占用大量的内存空间,数据量大时会严重影响性能,并且由于内部函数可以修改函数内部局部变量的特性,别有用心者可以借助内部函数随意修改内部局部变量的值,在IE中会出现内存泄漏。

解决办法

 可以在退出函数之前,将不使用的局部变量全部删除,即置为null;

也可以使用jQuery,jQuery为我们提供了另一个避免这种泄漏的工具。用.data()方法,将信息附加到DOM元素。由于这里的数据并非直接保存在扩展属性中(jQuery使用一个内部对象并通过它创建的ID来保存这里所说的数据),因此永远也不会构成引用循环,从而有效回避了内存泄漏问题。

 

四、事件中的冒泡和捕获机制

  (1)两者的区别

       DOM事件流(event  flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段

       事件冒泡和事件捕获的详细解释https://www.cnblogs.com/bfgis/p/5460191.html

(2)在什么环境下使用冒泡?

       当页面有很多DOM事件需要处理,比如说有100个li元素进行处理,当点击其中一个li时,都有这个li对应的事件被触发,就可以使用事件委托,给父元素添加点击事件,每个事件都会有一个事件源,就是你真正操作的部分。Event对象提供了的target属性就是事件源,用于捕获真正被点击的节点元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       ul {
        height: 300px;
        background: pink;
       } 
       li {
        line-height: 30px;
        height: 30px;
       }
       li:nth-of-type(2n) {
        background: red;
       }
       li:nth-of-type(2n+1) {
        background: green;
       }
    </style>
</head>
<body>
    <ul id='ul'>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    <script type="text/javascript">
        var oUl = document.getElementById('ul')
        oUl.addEventListener('click',function (e) {
            var name = e.target.nodeName.toLowerCase()
            if (name === 'li')
                console.log(name)
        })
    </script>
</body>
</html>

五、函数封装

(1)使用原生js封装一个addClass方法,为页面上DOM元素动态添加className

(2)使用原生js封装一个removeClass方法,动态删除DOM元素的class

 封装addClass和removeClass方法链接

六、对一个数组去重

对一个数组去重的五种方法链接

以上就是这次面试的题了,因为太菜,面试官很快就结束了面试,不过作为一个打不死的小强,本博主绝对不会气馁的! 

内容概要:本文围绕微电网群的双层优化与分布式优化问题,提出基于交替方向乘子法(ADMM)的分布式协同优化控制策略,并通过Matlab代码实现仿真验证。研究构建了上层为微电网间能量协调与优化调度、下层为各微电网内部源-荷-储精细化运行管理的双层优化模型。采用ADMM算法将集中式优化问题分解为多个可并行求解的子问题,实现了计算的分布式化与信息隐私保护,显著提升了系统的可扩展性与鲁棒性。文中系统阐述了模型构建原理、ADMM算法设计流程及其收敛性分析,并通过仿真实验验证了该方法在降低系统综合运行成本、提高可再生能源消纳能力以及维持系统稳定运行方面的有效性。; 适合人群:具备电力系统分析、优化理论基础,熟悉Matlab编程,从事微电网、分布式能源系统、智能电网等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握基于ADMM的分布式优化方法在微电网群协同能量管理中的具体应用;② 实现微电网群多主体参与下的经济调度与仿真分析;③ 深入理解双层优化架构的设计理念与分布式求解算法的实现机制。; 阅读建议:建议结合所提供的Matlab代码进行动手实践,重点剖析模型建立与算法实现的关键细节,可通过调整系统参数、改变运行场景等方式,深入探究ADMM算法的收敛特性及其对优化效果的影响。
内容概要:本文聚焦于风电出力不确定性的精确建模问题,提出采用拉丁超立方抽样(LHS)方法生成具有统计代表性的风电场景,并结合先进的场景缩减技术以降低计算复杂度。通过Matlab编程实现了LHS在高维随机变量空间中的均匀采样,有效克服了传统蒙特卡洛方法样本收敛慢、效率低的问题。在此基础上,引入基于聚类分析或概率距离度量的场景缩减算法,对初始大规模场景集进行优化合并,保留关键概率特征与出力趋势,构建出精简且具代表性的典型场景集。该方法显著提升了电力系统随机优化模型(如机组组合、储能调度、微电网能量管理)的求解效率与数值稳定性,同时确保输入场景的合理性与真实性,具备良好的可复现性与工程应用价值。; 适合人群:适用于具备一定电力系统分析基础和Matlab编程能力,从事新能源并网、随机规划、场景生成、电力市场及综合能源系统优化等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握拉丁超立方抽样在风电不确定性建模中的理论原理与Matlab实现技巧;②学习并应用场景生成与缩减技术,提升随机优化问题的建模与求解效率;③为含高比例风电的电力系统调度、风险评估与决策分析提供高质量的输入场景支撑。; 阅读建议:建议读者结合所提供的Matlab代码逐模块调试运行,深入理解抽样策略、距离计算、聚类缩减等核心算法的实现细节,并尝试将其集成到具体的优化模型中进行验证与拓展,以强化科研实践能力与创新思维。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值