百度智能小程序一面凉经
1)你说一下你做过的项目?
我做的第一个项目是结合高德地图开发的在线租车项目,这个项目由3个人负责,我主要负责前端页面的编写,还有一个人使用axure绘制产品图,负责UI;另外一个人负责后端数据的开发。我开发的模块有页面地图的渲染以及定位,停车场以及待出租车辆的开发和详细信息的封装,以及租户个人账户的开发。
项目遇到的难点:
(1)axios请求中post遇到的问题。
我在使用axios的post方法请求数据,数据被拦截,数据一直传不过去后端那,就是报错“参数不足”。后来查资料才知道axios对于post请求是有拦截功能的,所以我用了qs第三方工具库,将传给后端的数据进行了处理。我是用qs.stringify()这个方法将对象序列化为URL形式,以&进行拼接。
(2)页面缓存遇到的问题。
有个是填写信息页面,需要填写一部分信息,进入查看协议页面,返回的时候,页面上填写的信息还需要留存。当时没有办法做到留存,我用vue提供的keep-alive来完成页面的缓存。
2)你对html的了解?
html是一种超文本标记语言,是一种标记语言。它包括一系列标签,html就是用这些标记标签来描述网页的。
3)说一下有哪些行内标签和哪些块级标签?
行内标签:span、a、strong、em、i
块级元素:div、p、ul、li、h
行内块元素:img、input、select、button
4)怎么实现水平垂直居中?
(1)利用定位+margin:auto 相对定位下,使用绝对定位将上下左右都设置为0,再设置margin:auto
(2)利用定位+transform 相对定位下,使用绝对定位,将top和left都设置为50%,再利用translate平移回自身宽高的50%即可
(3)table布局:vertical-align:middle text-align:middle
(4)flex布局:justify-content:center align-items:center
5)CSS怎么实现三角形
(1)使用高度为0的容器以及透明的border绘制三角形
高度为0的容器,设置不同的border;让任何三边的边框颜色为transparent,就可以得到对应的三角形。
(2)transform:rotate配合overflow:hidden绘制三角形
设置图形的旋转中心在左下角,进行旋转,配合overflow:hidden
transform-origin:left bottom
transform:rotate(45deg)
6)怎么实现一个轮播图
(1)CSS制作轮播图:主要通过一个展示盒子,一个图片存储盒子。展示盒子的大小即为一个图片的大小。存储盒子的宽度要足够所有的图片左浮横向排列。然后将存储盒子的溢出部分隐藏,再调用动画特效animation。注意的就是第一张图片和最后一张图片是一样的。制作动画使用的是@keyfram。
这里面试官还问我animation的参数。
animation:keyfram的名称 规定所完成动画所需要花费的时间 规定动画的曲线 规定动画开始之前的延迟。
(我觉得这里应该会说就可以了吧,面试官不会让人手写CSS吧)
(2)用js制作轮播图:
所有轮播图片横向排列,在一个窗口显示一张图片,窗口外的图片隐藏,每一次一排图片移动就是移动一张图片的距离,切换到下一张图片,即可实现图片轮播。图片的自动播放就会用到定时器。当我们播放到最后一张图片的时候,下一张再趁机无过渡效果切换到第一张图片。
我们要设置一个index的变量记录当前处于第几张图片。注意,这里的index不能无限加大,就是说的防抖。(这里说了防抖的话面试官可能就会问你防抖和节流的区别以及使用场景了)
防抖:一定时间连续触发的事件,只在最后执行一次
使用场景:window触发resize的时候,不断的调整浏览器窗口的大小,会不断的触发这个事件,用防抖来让其只触发一次。
function debounce(fn, time) {let timeout = null;return function() {clearTimeout(timeout);timeout = setTimeout(() => {fn.appy(this, arguments);}, time);}}
节流:一段时间内只执行一次
使用场景:鼠标不断点击触发,单位时间内只触发一次
function throttle(fn, time) {let canRun = true;return function() {if (!canRun) {return;}canRun = false; //立即设置为falsesetTimeout(() => {fn.apply(this, arguments);canRun = true;}, time);}}
7)CSS预处理器有哪些?
Sass、Less
8)预处理器的原理知道吗?
为传统的CSS增加了编程特性,比如定义变量之类的,使得书写代码更流畅更轻松。
9)v8引擎怎么编译js?
JS有解析器解析后生成抽象语法树AST,获得抽象语法树之后,v8引擎加入了解释器,语法树通过解释器生成了字节码,此时语法树就被清除掉了,释放内存空间,生成字节码直接被解释器执行,同时生成的字节码将作为基准执行模型。在代码不断运行的过程中,解释器收集到了很多可以用来优化代码的信息,比如变量的类型,哪些函数执行的频率较高,这些信息被发送给编译器,编译器会根据这些信息编译出经过优化的机器代码。
优化策略:(1)函数只声明未被使用,不会被解析成AST
(2)函数只被调用一次,字节码直接被解释执行
(3)如果函数被调用多次,可能会被标记为热点函数,可能会被编译成机器代码
10)浏览器事件循环机制
所有的同步任务都在主线程上执行,形成一个执行栈。主线程之外,还存在一个“任务队列”。只要异步任务有了运行结果,就在任务队列之中放置一个事件。一旦执行栈中的所有同步任务执行完成,系统就会读取任务队列,看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。主线程就会不断重复这一步。主线程从任务队列中读取事件,这个过程是不断循环的,所以整个的这种运动机制就被称为事件循环。
11)闭包及闭包的使用场景
闭包:指能够读取其他函数内部变量的函数
使用场景:(1)原生的setTimeout传递的第一个函数不能带参数,通过闭包可以实现传参效果。
function f1(a) {function f2() {console.log(a);}return f2;}var fun = f1(1);setTimeout(fun, 100);
(2)封装私有变量
function Animal(value) {var animal = value;var setNum = 0;this.getName = function() {return animal;}this.setName = function(value) {setNum++;animal = value;}this.getNum = function() {return setNum;}}var animal = new Animal('ni');animal.setName('ho');console.log(animal.getName()); //hoconsole.log(animal.getNum()); //1
(3)防抖、节流
12)怎么销毁闭包?
闭包可以解决全局环境变量污染的问题,让外部环境可以访问每个函数的局部变量,且这些局部变量不会被销毁。
首先如果是函数访问了外部变量而自动创建了的闭包这种情况,我们是无需操心的,因为它会自动销毁,而我们手动实现的闭包,我们可以把访问的函数局部变量设置为null,即手动清除变量。这样js垃圾回收机制在下一次垃圾回收时就会把这个局部变量回收,从而销毁了这个手动设置的闭包。
13)浏览器的垃圾回收机制原理?
解决内存的泄露,垃圾回收机制会定期找出那些不常用到的内存,然后释放其内存。
浏览器常用的垃圾回收机制有两种方法:标记清除和引用计数。
标记清除的工作原理:当变量进入环境时,将这个变量标记为“进入环境”,当变量离开环境时,则将其标记为“离开环境”,标记“离开环境”的就回收内存。
引用计数的工作原理:跟踪记录每个值被引用的次数。
14)js数据结构有哪些?
数组
栈
队列
链表
哈希表
树
图
堆
这里问到了单链表实现和堆排序(当时不会。。)
15)http和https有什么区别?
(1)HTTPS协议需要用到CA申请证书,一般免费证书较少,需要一定的费用。
(2)HTTP是超文本传输协议,信息是明文传输。HTTPS则是具有安全性的SSL加密传输协议。
(3)HTTP和HTPPS使用的是完全不同的连接方式,用的端口号也不一样,前者是80,后者是443。
(4)HTTP的连接很简单,是无状态的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
16)五层协议的体系结构
应用层、运输层、网络层、数据链路层、物理层
百度智能小程序一面凉经相关推荐
- 开源50万行代码,百亿广告分成,百度智能小程序能成吗?
作者 | 非主流 出品 | AI科技大本营 终于,BAT 在小程序的赛道上展开了激战,而这一场战争得到了百度前所未有的重视. 9 月 4 日,百度总裁张亚勤称拉动百度业务的"新四小龙&quo ...
- 百度智能小程序开源联盟正式成立 小程序开发创业又一新风向标
在去年7月的百度AI开发者大会上,发布了百度智能小程序,并透露将在12月进行开源. 如今,百度世界大会先至.会上,沈抖针对智能小程序,推出了多项措施. 首先便是宣布智能小程序开源联盟正式成立.首批联盟 ...
- 百度智能小程序正式开源,开发方案详解
13日下午,2018百度·智能小程序学院首场线下公开课在北京举行,百度官方数据显示,自今年7月份百度AI开发者大会以来,百度智能小程序月活已经过了1.5亿,值得一提的是,智能小程序已经在GitHub上 ...
- 百度智能小程序开源联盟成立,首批12家成员签约
12月20日上午,百度智能小程序开源联盟签约仪式在京举行.爱奇艺.快手.WiFi万能钥匙.58同城.汽车之家.携程.万年历.猎豹移动.百度视频.宝宝巴士.卓易等12家企业与百度正式签约,成为智能小程序 ...
- 百度提前批-百度智能小程序(面经详解)
文章目录 百度提前批-百度智能小程序(面经详解) 1.定位 2.z-index .层叠 3.作用域(scope) 4.单例模式 5.原型链 6.继承(借用构造函数,寄生组合继承,缺点是什么) 7.闭包 ...
- 小程序动态class_会后剧透!百度智能小程序的最新动态都在这儿了!
月活突破5亿,入驻智能小程序数量42万. 这是百度智能小程序在万象-百度2020移动生态大会上交出的最新成绩单.当天,百度方面还以"生态进化,共创共荣"为主题,召开了智能小程序分论 ...
- php布道师,百度智能小程序布道师计划发布,打造全链条导师服务
今天(12月13日),百度智能小程序首场公开课上发布了"布道师计划":将小程序行业内优秀的开发者.产品经理.运营方.TP伙伴.投资人.媒体观察者们聚集在学院中,作为"布道 ...
- php布道师,百度智能小程序宣布“布道师”计划 昭原集团加入合作阵营
2018年12月13日,以"小.有大智"为主题的百度智能小程序公开课在北京首讲,吉林省昭原集团以及联弼科技相关负责人应邀出席.会上百度副总裁,智能小程序学院院长沈抖博士与百度小程序 ...
- 极致CMS百度智能小程序前后端源码
安装说明 1.上传"小程序模板.zip"压缩包到网站根目录,解压安装极致CMS内容管理系统. 2.将"极致CMS百度小程序源码-前端"解压到电脑桌面,用&quo ...
最新文章
- JSON字符串 拼接与解析
- iOS 10道细节面试题
- 定义——设计思维之聚焦问题
- SDK与API的联系与区别
- Socket的select制作多客户端传输(Qt)
- el-table 行背景颜色_用手机拍花卉怎样使背景变黑?
- python 虚拟环境原理_Python 虚拟环境
- 美国警察开特斯拉追疑犯,时速飙到193公里,然后发现没电了...
- Hibernate--使用xml配置映射关系
- mysql-查看表-修改表-删除表
- 缓存2 动态缓存 memcached
- mysql中credit,CREDIT项目:我国类风湿关节炎数据库建设开启
- [建议]添加模板功能
- Windows 平台安装 MongoDB
- 【算法】159题 Longest Substring with at Most Two Distinct Characters 最大的子串
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
- kubernetes集群架构和组件
- xshell和xftp免费版官方(家庭、学校版)下载
- 隐藏 element-ui上传照片显示的加号盒子
- 光学三原色与色的三原色
热门文章
- 一键抠图怎么弄?图片怎样变透明色背景?
- configure: error: Requested 'libcrypto = 1.1.0' but version of OpenSSL-libcrypto is 1.0.2g
- php 微信分享快速实现
- 老王,快给你的 Spring Boot 做个埋点监控吧!
- php中使用视频流的方式播放视频。
- 高频电子线路 高频功率放大器
- 常规串口驱动CH340的安装
- 实时渲染、离线渲染、实时云渲染、混合渲染是什么?
- YOLOV7调试的bug
- 华为交换机traffic策略设置