目录

前景知识

viewport是什么

viewport 是用户网页的可视区域。
手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

HTTPS是什么

HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

共享密钥加密(对称密钥加密)

加密和解密同用一个密钥。加密时就必须将密钥传送给对方。

公开密钥加密(非对称密钥加密)

公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗走。

同步和异步

同步:在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行
异步:在一定程度上可以看做是多线程的,请求一个方法后,就不管了,继续执行其他的方法

DNS

即域名系统,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

问题汇总

html/css基础部分

  • viewport各个属性值的意义
    width:控制 viewport 的宽度
    height:控制 viewport 的高度
    initial-scale:初始缩放比例
    maximum-scale:允许用户缩放到的最大比例
    minimum-scale:允许用户缩放到的最小比例
    user-scalable:用户是否可以手动缩放
  • 设计弹出层的具体过程
  • 基础css水平居中
(1) 将元素display为内联元素,利用 text-align: center; 实现将其在块级元素内部居中
(2) 若块级元素为固定宽度,则可以通过 margin: 0 auto; 使其水平居中
(3) 利用弹性布局,display: flex; 实现水平居中,其中 justify-content: center;
  • 基础css垂直居中
(1) 单行内容的垂直居中
给容器设置相等的height和line-height
(2) 多行内容的垂直居中,且容器高度可变
设置上下的padding值相同
(3) 把容器当作表格单元
display: table-cell;
vertical-align: middle;
// 块级元素垂直居中
.parent{position: relative;
}.child{position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);
}// flex布局垂直居中
.parent{display: flex;justify-content: center;align-items: center;
}
  • 透明度问题
  • 五星好评点几颗星亮几颗,用css
  • position 有哪些属性及其区别
  • 文本溢出的时候显示省略号
  • CSS有哪些选择器
标签选择器
类选择器
ID选择器
全局选择器
组合选择器
继承选择器
伪类选择器

兼容性问题总结

(1) HTML对象获取问题
FireFox:document.getElementById("idName")
ie:document.idname或者document.getElementById("idName")
解决办法:统一使用document.getElementById("idName")
(2) const问题
Firefox下,可以使用const关键字或var关键字来定义常量
IE下,只能使用var关键字来定义常量
解决方法:统一使用var关键字来定义常量
(3) event.x与event.y问题
IE下,event对象有x,y属性,但是没有pageX,pageY属性
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性
解决方法:使用mX(mX  =   event.x   ?   event.x  :   event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX

js 部分

  • 如何实现不用viewport控制用户不能缩放
    用js监听屏幕宽度,让页面宽度和屏幕宽度保证一个恒定的比例。
  • 为什么会有点透现象
  • js 实现查询字符串中出现最多次数的字符
var str = "zhaochucichu";
var o = {};
// 用对象的属性来统计每一字符的频数
for (var i = 0, length = str.length; i < length; i++) {// charAt() 方法可返回指定位置的字符var char = str.charAt(i);if (o[char]) {o[char]++;} else {o[char] = 1;}
}
console.log(o);
// 找到频数最高的值
var max = 0;
for (var key in o) {if (max < o[key]) {max = o[key];}
}
// 找到频数最高值对应的字符及其频数
for (var key in o) {if (o[key] == max) {console.log("最多的字符是" + key);console.log("出现的次数是" + max);}
}
  • 关于js请求需要时间的问题
  • 闭包问题
  • 对象深拷贝
function copy (obj) {var newobj = {};for (var i in obj) {if (typeof obj[i] == "object") {newobj[i] = copy(obj[i]);} else {newobj[i] = obj[i];}}return newobj;
}
  • 事件循环机制
    http://www.cnblogs.com/yqx0605xi/p/9267827.html
    https://www.cnblogs.com/cangqinglang/p/8967268.html
  • 什么是web worker
    Web Workers 使得一个Web应用程序可以在与主执行线程分离的后台线程中运行一个脚本操作。这样做的好处是可以在一个单独的线程中执行费时的处理任务,从而允许主(通常是UI)线程运行而不被阻塞/放慢。
    浏览器中JS和UI公用一个线程,JS计算过程中,不能响应UI;如果遇到计算量比较大的任务,如操作图像像素时,会造成用户行为得不到响应。Web Worker 是为了解决 JavaScript 在浏览器环境中没有多线程的问题。
  • 正则表达式的使用
var  reg=new RegExp('abc','gi');
// 或者 var  reg=/abc/gi;
// 第一个参数是正则的内容,第二个参数是修饰符,修饰符通常有三种 i,g,m
// i表示忽略大小写进行匹配
// g表示全局匹配,匹配到第一个后不停止匹配
// m表示多行匹配,遇到换行不停止匹配
// 一些常用的方法,test方法,测试是否与正则匹配
  • 跨域的方法
    只要协议、域名、端口有任何一个不同,都被当作是不同的域
    js跨域是指通过js在不同的域之间进行数据传输或通信
1. 通过jsonp跨域
jsonp在页面上引入不同域上的js脚本文件实现请求不同域上的数据
(1) 通过script标签引入一个js文件
(2) js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入
注:需要服务器端的页面进行相应的配合
2. 通过修改document.domain来跨子域
3. 使用window.name来进行跨域
window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

详细讲解:https://www.cnblogs.com/2050/p/3191744.html

  • ajax请求
    jquery的ajax写法
    https://www.cnblogs.com/GarfieldTom/p/4277708.html
    原生js的ajax写法
    https://www.cnblogs.com/cythia/p/6978323.html
  • 分别介绍ES6的Class与ES5的对象继承以及它们的区别
  • 数组去重
Array.prototype.unique = function() {var newArray = [];var obj = {};for (var i = 0; i < this.length; i++) {if (!obj[this[i]]) {newArray.push(this[i]);obj[this[i]] = 1;}}return newArray;
}ES6实现
let newArray = [...new Set(arr)];
  • 不声明任何额外变量实现Array的map
  • 介绍Promise和AsyncFunction
    Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。
// Promise
var promise1 = new Promise(function(resolve, reject) {setTimeout(function() {resolve('foo');}, 300);
});promise1.then(function(value) {console.log(value);// expected output: "foo"
});

AsyncFunction 构造函数用来创建新的 异步函数 对象,JavaScript 中每个异步函数都是 AsyncFunction 的对象。
异步函数是指通过事件循环异步执行的函数,它会通过一个隐式的 Promise 返回其结果。

  • ==的比较规则
  • 字符串数组的倒序
var reverseString = function(s) {var start = 0, end = s.length - 1;// 先转化为数组再进行反转var ret = s.split('');while (start < end) {var tmp = ret[start];ret[start++] = ret[end];ret[end--] = tmp;}return ret.join('');
};
  • js中,this的指向是什么?
    定义:this的指向是包含它的函数作为方法被调用时所属的对象。
  • 如何修改this的指向
(1)使用局部变量来代替this指针
(2)使用call或apply方法
call 普通传参
function say(arg1,arg2){console.log(this.name,arg1,arg2);
};
var obj = {name : 'tom',say : function(){console.log(this.name);}
}
say.call(obj,'one','two');//tom one twoapply 以数组的形式传参
function say(arg1,arg2){console.log(this.name,arg1,arg2);
};
var obj = {name : 'tom',say : function(){console.log(this.name);}
}
say.apply(obj,['one','two']);//tom one two
  • 实现简易的模板函数
//简易模版函数
function template(tmpl, data) {var result = tmpl;for(var key in data){//console.log(`key ${key} data${data[key]}`)result = result.replace(new RegExp(key, 'g'), data[key]);}console.log(result);
}
template('我的名字是(name),我的工作是(work)', {name: 'xxx',work: 'yy'
});

字节跳动前端实习面经相关推荐

  1. 字节跳动前端实习一面

    字节跳动前端实习一面 我是约的10月9号下午2点的场,现在仔细给大家梳理一下面试的内容吧. 1.你学习前端的方法 这个问题属于开放问题了,怎么回答都是可以的. 2.盒子模型 w3c和IE盒模型 场景题 ...

  2. 字节跳动前端实习一面二面HR面面经

    16号做完笔试,后来约了21号一面,25号二面,一面面试官看起来比较和蔼,一来就是自我介绍,他说前端的问题我也没准备多少,我就知道他不是前端的了,瞬间有点方. 一面 一开始是数据结构的题,二叉树相关, ...

  3. 字节跳动前端实习一面二面(凉面)

    运气也算好吧,恰好自己在重庆的实习自己刚辞职,然后其实自己都打算春招了,然是app的给我推送了消息,hr邀请我投简历,然后投了过去.过了两天,收到电话约一面. 一面 过了也已经有几天了,好歹也算是有体 ...

  4. 字节跳动暑期实习前端面试

    字节跳动暑期实习前端面试 现在轮到我这个23届开始真正地找实习了,但是今年的校招情况非常非常差,这个在今年的实习总结再详细说吧.这次投递字节也是非常的有意思,本来我是投递的字节抖音互动部门,然后刚投了 ...

  5. 关于字节跳动前端校招一二三面+HR面试过程

    分享一下字节跳动 前端校招 一二三面+hr面 一面 (视频面 1小时35分钟) 20年3月1日 标题 自我介绍 vue和react有什么区别,更喜欢用哪个,为什么 react hook熟悉吗,解决了什 ...

  6. 字节跳动暑期实习面试题准备

    字节跳动暑期实习后端面试题准备 1.Java基础 java中int和Integer的区别,为什么有了int还要有设计Integer java中hashmap的实现原理,讲解一下哈希函数 知道哪些垃圾回 ...

  7. 后端开发面试自我介绍_字节跳动暑期实习后端开发面试经历

    字节跳动后端实习是什么,字节跳动后端实习面试流程是怎样? 今天小编就来帮助大家了解一下字节跳动后端实习面试到底有什么内容. (好了不皮了,开始正文) 字节的面试流程总的来说还是挺享受的,和面试官两人的 ...

  8. 字节跳动 python面试_字节跳动数据分析实习岗面试全经历,竟然也会问这样的问题?...

    临近年底,又有不少人跃跃欲试想跳槽了. 但跳槽这个事说容易也容易,投简历总是有人要的,但说难也难,要进大厂,不光要看能力,更要看项目,看背景. 就怕辛辛苦苦准备半天,面试的时候没表现好,直接被刷掉,面 ...

  9. 字节跳动-数据分析-实习面经

    分享一下字节跳动-数据分析-实习面经 场景题 1.介绍一个最近的数据分析项目,有没有什么结论? 2.一个刚上线的短视频app,应该关注哪三个指标? 3.在短视频信息流app中放广告位,如何确认能否带来 ...

  10. 字节跳动前端用什么框架

    字节跳动前端用什么框架,字节跳动期权换购是什么意思? 字节跳动前端用的框架都是脚本框架比较多一点的. 字节跳动面试和hr聊的很好 但是没通过 聊得好不见得HR就认为你适合字节跳动.你们只是交流的比较愉 ...

最新文章

  1. 现代简明魔法 php内核,你所必须知道的PHP 9种非常有用的函数和特征!
  2. java.net.URISyntaxException的解决办法
  3. 高并发 python socket send 异步_对于Python中socket.listen()与多线程结合的困惑?
  4. Jvm平时用到的参数
  5. 使用SAP Cloud for Customer Product OData服务读取产品主数据和其图片信息
  6. java 生成jar_java如何生成jar
  7. 同级选择器_10-CSS3选择器详解
  8. 汽车电子知识篇(十二)-汽车域控制器主芯片选型
  9. 引入Vant-UI全部组件的代码 - (备份)
  10. scrapy异步写入mysql_scrapy之异步写入数据库
  11. Description Resource Path LocationType Java compiler level does not match the version of the instal
  12. 维宏控制卡win7 驱动_维宏雕刻机控制卡驱动
  13. 程序员带半箱辣条参加东京奥运,网友:猝不及防一波狗粮!
  14. c语言选猴王链表,C语言程序设计-猴子选大王[链表应用]
  15. 查看linux当前ip,linux查看当前服务器ip地址 命令行
  16. 断链在平曲线计算中的处理——短链篇
  17. Jieba分词斗罗大陆
  18. 程序员述职报告和转正
  19. DataGuard - 利用Cascaded Redo Log Destinations避免WAN稳定性问题
  20. Python123 期末题库

热门文章

  1. 企业微信集成外部APP
  2. html页面填充颜色,div填充颜色 怎么用css定义部分背景颜色
  3. remapkey不能打开注册表_解除封锁注册表被禁用的几种解决办法
  4. win7注册表编辑已被管理员禁用怎么办
  5. Linux LittlevGL 使用
  6. 微分几何笔记(1) —— 预备知识 Proof of Mazur-Ulam Theorem
  7. MySQL 中 declare 声明的局部变量和 @var 会话变量的使用介绍
  8. Android开发之移动互联网周刊第二期
  9. Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用
  10. html5做九九乘法表,利用JavaScript制作九九乘法表实例教程