美文网首页
由一次面试引出的问题及联想

由一次面试引出的问题及联想

作者: 小刘要学习 | 来源:发表于2019-03-07 04:23 被阅读0次

更新中...

  1. 隐藏一个元素有哪些实现方式
  • visibility: hidden
  • display:none

区别:
visibility: 仅设置其可见性,并不改变其占位。
display: none 设置其可见性,并隐藏其位置
gist: https://gist.github.com/popozy/50007484fb8ce717c285bad212f1ba36

  • ng-hide ng-show ng-if

区别:

  • By default, the 'ng-hide/ng-show' class will style the element with 'display:none!important'
  • The 'ng-if' removes or recreates a portion of the DOM tree base on an {expression}. If the expression assigned to 'ng-if' evaluates to a false value then the element is removed from the DOM, otherwise a clone of the element is reinserted in to the DOM.
{
  width: 0; 
  height: 0
}
{
  position: absolute;
  left: -9999px;
  top: -9999px;
}
  1. $scope $rootScope的联系 $scope, $rootScope什么时候才能被使用
  • scope继承与rootScope,可以在各个controller中使用$rootScope的上定义的变量值
  • $scope只能在各自对应的controller中生效
  1. img的sprite
  • 存在意义:雪碧图解决每个图标请求一次,大量的http请求消耗带宽,大量时间花费在https请求的建立上所导致的性能问题。
  • 原理:将icon等放在一张图片上,通过css的样式,控制某个icon的显示。
  • css属性:
    • background-image
    • background-position


      background-position value
  1. flex布局详细用法梳理
容器属性:
  • display: flex;
  • flex-direction: row | row-reverse | column | column-reverse;
    default: row 主轴方向为横向自左向右
  • flex-wrap: nowrap | wrap | wrap-reverse;
    default: nowrap 不换行
  • align-items: flex-start | flex-end | center | baseline | stretch;
    default: stretch 交叉轴上的对齐方式:上对齐
    baseline: 项目的第一行文字的基线对齐
    stretch: 伸展对齐,如果高度没设置,则撑满父容器
  • justify-content: flex-start | flex-end | center | space-between | space-around;
    default:flex-start 主轴上的对齐方式为左对齐
    space-around: 两侧留白
    baseline: 项目的第一行文字的基线对齐。
  • shorthand
    flex-flow: flex-direction || flex-wrap
子元素属性
  • order: <integer>; 元素排名权重,值越小,越靠前
    default: 0
  • flex-grow: <number>; /* default 0 */
    当存在剩余空间时,剩余空间的均分比例。默认0为不分
  • flex-shrink: <number>; /* default 0 */
    当空间不足时,多出部分的缩小比例。默认1为全部等比例缩小。
  • flex-basis: <length> | auto; /* default auto */
    子元素在均分剩余空间之前的宽/高,默认auto为子元素原有尺寸
  • align-self: auto | flex-start | flex-end | center | baseline | stretch; /* auto */
    子元素在交叉轴上设置的自身的对齐方式,默认auto为继承父元素的align-items,如果没有该属性,默认auto继承为stretch
  • shorthand
    flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;
Flex Practice

两个元素,右边元素定宽,左侧自适应

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style type="text/css">
    .parent {
      display: flex;
      border: 1px solid #000;
      height: 100px;
    }
    .child1 {
      flex: 1
    }
    .child2 {
      width: 100px;
      background-color: red;
    }
  </style>
</head>
<body>
  <div class="parent">
    <div class="child1"></div>
    <div class="child2"></div>
  </div>
</body>
</html>
  1. ng-app能有几个同时启动

一般angular单个页面只能加载一个ng-app,一个页面会自动加载第一个ng-app,其它ng-app不会被加载。如果想加载多个ng-app就需要使用angular.bootstrap去加载后面的ng-app

angular.bootstrap(element, [modules], [config]);
其中第一个参数element:是绑定ng-app的dom元素;
modules:绑定的模块名字
config:附加的配置

  1. null和undefined

null表示"没有对象",即该处不应该有值。典型用法是: 作为函数的参数,表示该函数的参数不是对象;或 作为对象原型链的终点。

undefined表示被定义了,但是还没赋值。

  1. Promise
  • 是什么
    • Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
    • Promise对象通过构造时传入异步执行的代码,并通过对象的then api来处理异步执行结果。
    • Promise对象存在三种状态,pending, fullfiled, rejected。
    • 状态变化有两种,变化只能由异步操作的结果决定,即Promise构造函数时候传入的参数foo函数中的异步代码所决定。
      pending->fullfilled(这个状态被称为,resolved定型)
      pending->rejected(这个状态被称为,resolved定型)
  • 怎么做
    通过new创建一个Promise对象,其构造函数的入参是一个函数f,函数f的入参是两个函数resolve, reject的JavaScript内置函数。如下
const promise  = new Promise(function(resolve, reject) {
    //sync code
    if(succ) { resolve(value)}
    else if(failed) {reject(error)}
});

通过 resolve和rejected完成从pending到fulfilled和rejected的状态切换,通过value和error传出起结果。
那怎么接呢?用这个promise的对象的then api,入参是success的callback和failed的callback,两个callback的入参分别是上面的value和error值,这样就可以callback接住结果来处理异步代码结果了。如下

 promise.then(function(value) {
    // success logic
}, function(error) {
   // failed logic
})

需要注意有两点

  • promise在new的时候,就会直接执行其构造函数入参foo函数(内部的异步代码)
  • promise.then即使在异步代码resolve和reject之后才执行到,也会立刻得到执行结果。这要区别于eventlistener的事件监听方式,当事件监听注册代码在异步代码返回结果之后执行,那就监听不到异步代码的返回了。
  1. 箭头函数及this的指向
(param1, param2, ...) => {
  // function body
  // this 箭头函数外层
}

待补充原理:

  1. this--系统学习上下文与上下文栈(变量对象、this与作用域链)在JavaScript执行过程中发生实际操作
    ref: https://github.com/mqyqingfeng/Blog/issues/4
  2. javascript的深浅拷贝与直接赋值
  3. 页面性能优化
    ref: http://www.ha97.com/2710.html
  4. requirejs和import的区别
  5. const声明变量是否可以修改
  • const对于基本数据类型来讲(整型,浮点,字符串,布尔值,Symbol)都是无法修改的,因为其变量存储的栈地址无法被修改
  • const声明的引用类型,其栈地址无法被修改,即被const修饰的变量在初始化被assign之后无法再被重新赋值(修改栈内存的地址),但是其栈内存中存着的值指向的引用对象如Map等是可以被修改的。

  1. http1 http2 https--回顾CA多级发放,对称加密与非对称加密
    refs: https://github.com/popozy/Leo-DailyGossip/blob/master/networkSecurity/2.1%20Introduction%20to%20Cryptography.pdf
  2. canvas svg css3动画
    https://www.zhihu.com/question/19690014
  3. javascript的事件监听与冒泡
  4. 继承实现方式
  • 原型链继承
  • call方式继承
  • 组合继承(原型链+call)
  • 寄生式继承(组合继承优化,减少原型链继承时对父类属性方法的二次拷贝)
  1. React源码(虚拟dom和diff算法)
  2. angularjs工程结构与懒加载
  3. css样式表
  • 外部样式表:
<link rel="stylesheet" type="text/css" href="css/baseStyle.css">
  • 内部样式表:
<style type="text/css">
    .parent {
      display: flex;
      border: 1px solid #000;
      height: 100px;
    }
    .child1 {
      flex: 1
    }
    .child2 {
      width: 100px;
      background-color: red;
    }
  </style>
  • 内联样式表
<a href="http://www.baidu.com" style="text-decoration:none" target="_blank">
这是一个不带下划线的链接
</a>

相关文章

  • 由一次面试引出的问题及联想

    更新中... 隐藏一个元素有哪些实现方式 visibility: hidden display:none 区别:v...

  • 由《小丑》引出的联想

    黑暗中的静室,红酒浅盏,二刷《小丑》。我的情绪随着情节的展开,犹如坐上了一架云霄飞车,平缓的爬坡,忽尔失控急坠而下...

  • self和super的区别

    由一个面试题引出的问题,为什么[self class]和[super class]打印的结果一样? 这里,我们使用...

  • 2018iOS面试考卷你会吗?

    面试只是对个人技术及应变能力的一次考验。只有解决了一个问题,你才有机会遇见下一个问题。以下面试题由群友提供或网上收...

  • 2018iOS面试合集文档

    序言 面试只是对个人技术及应变能力的一次考验。只有解决了一个问题,你才有机会遇见下一个问题。以下面试题由群友提供或...

  • 我怎样在英国找工作-面试篇3

    简介## 本篇讨论HR Interview的问题及应对方案。 由公司专职HR来做面试官的面试,称之为HR Inte...

  • java大厂面试题整理(六)JVM常用命令和参数

    关于JVM的面试题由死锁引出。 死锁及定位 从宏观上死锁产生的原因:死锁是指两个或两个以上的进程在执行过程中,因争...

  • 由选择引出的

    人生总面临各种各样的选择,不同的选择结果可能大相径庭。其中还有一部分人,性格本身就是犹豫不决的,开始觉得对的决定但...

  • 大佬浅谈JVM

    引出面试问题1、什么是JVM(java virtual Machine )?JVM 是 JAVA class 编译...

  • 由一次面试引发的反思

    第一次参加这样的面试:面试官在第一排,后面坐着面试者,面试者需要在讲台介绍自己及回答问题。 坐...

网友评论

      本文标题:由一次面试引出的问题及联想

      本文链接:https://www.haomeiwen.com/subject/koeguqtx.html