39
html
题目:title和h1、i和em、b和strong有何区别
答案:
title是放在head里面的,网页窗口标题,利于SEO
h1是放在body里面的,会在网页上展示出来
i和em都是斜体,后者有一种语义上的强调
b和strong都是粗体,后者有一种语义上的强调
css
题目:水平、垂直居中方法
答案:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水平、垂直居中</title>
<style>
/* 水平居中 */
.box {
width: 160px;
height: 160px;
border: 1px solid black;
/* 法一;针对块级元素内的行内元素 */
text-align: center;
/* 法二;flex布局 */
display: flex;
justify-content: center;
/* 法三;absolute + transform */
position: relative;
}
.center {
/* 法三 */
position: absolute;
left: 50%;
transform: translateX(-50%);
/* 法四;margin - auto;注意必须是块级元素且固定宽度 */
display: block;
width: 48px;
margin: 0 auto;
}
/* 垂直居中 */
.box2 {
width: 160px;
height: 160px;
border: 1px solid black;
/* 法一 */
display: table-cell;
vertical-align: middle;
/* 法二;flex布局 */
display: flex;
align-items: center;
/* 法三 */
line-height: 160px;
/* 法四;absolute + transform */
position: relative;
}
.center2 {
/* 法四 */
position: absolute;
top: 50%;
transform: translateY(-50%);
/* 该方法对垂直居中不起作用 */
margin: auto 0;
}
</style>
</head>
<body>
<h3>水平居中</h3>
<div class="box">
<span class="center">ceshi1</span>
</div>
<h3>垂直居中</h3>
<div class="box2">
<span class="center2">ceshi2</span>
</div>
</body>
</html>
js
题目:对模块化的理解
答案:
定义:把常用功能代码分解出来独立成一个模块文件,当其它地方有使用时可直接导入;提高代码复用
分类:
1、commonjs规范;是服务端nodejs的标准,同步加载模块
//导入
require('module')
require('./app.js')
//导出;exports-导出属性或方法,module.exports-导出对象
exports.getSomethInfo = function (){}
module.exports = {someValue,someFunction}
2、es6模块规范;浏览器端的规范,高版本的服务端nodejs也支持
// 导入
import "/app";
import React from “react”;
import { Component } from “react”;
// 导出
export function multiply() {...};
export var year = 2018;
export default ...
...
3、其它:AMD - 异步加载模块;CMD - 异步加载模块;UMD - commonjs+amd
ps:commonjs规范与es6模块规范
ComonJS
对于基本数据类型,属于复制。即会被模块缓存;同时,在另一个模块可以对该模块输出的变量重新赋值。
对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。
当使用require命令加载某个模块时,就会运行整个模块的代码。
当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。
循环加载时,属于加载时执行。即脚本代码在require的时候,就会全部执行。一旦出现某个模块被”循环加载”,就只输出已经执行的部分,还未执行的部分不会输出。
ES6模块
对于只读来说,即不允许修改引入变量的值,import的变量是只读的,不论是基本数据类型还是复杂数据类型。当模块遇到import命令时,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。
对于动态来说,原始值发生变化,import加载的值也会发生变化。不论是基本数据类型还是复杂数据类型。
循环加载时,ES6模块是动态引用。只要两个模块之间存在某个引用,代码就能够执行。
总结:require/exports 是必要通用且必须的;因为事实上,目前你编写的 import/export 最终都是编译为 require/exports 来执行的。
其它
题目:说说公钥加密和私钥加密
答案:
1、公钥加密:非对称加密,使用2个密钥,一个公有密钥用来加密,一个私有密钥用来解密。常用于数字签名。常见公钥加密算法:RSA
2、私钥加密:对称加密,使用一个密码进行加解密,加密算法可以公开,但解密密钥不能公开。常见私钥加密算法:DES、AES、RC5