前端面试--模拟面试(三)
模拟面试题三
- 1.说一说创建ajax过程?
- 2.Vue生命周期的阶段有哪些?
- 3.说一说HTML语义化?
- 4.如何判断对象是否属于某一个类
- 5.字符串相加编程题
- 6.链表编程题
1.说一说创建ajax过程?
- 创建XMLHttpRequest对象
const xhr = new XMLHttpRequest();
- 初始化设置请求方法和url
//POST请求
xhr.open('POST',"http://localhost:xxx");
//GET请求
xhr.open('GET',"http://localhost:xxx/a=100&b=200");
- 发送(向服务器发送请求)
GET请求将参数在请求地址url中
POST请求将参数放在send()中
//POST请求
xhr.send("a=200&b=200");
//GET请求
xhr.send();
- 设置响应HTTP请求状态变化的函数
xhr.onreadystatechange = function() {if(xhr.readyState == 4){}
}
创建完HTTP请求之后,可以将HTTP请求发送给Web服务器了。发送HTTP请求的目的是为了接收从服务器中返回的数据。从创建XMLHttpRequest对象开始,到发送数据、接收数据、XMLHttpRequest对象一共会经历以下5中状态。
- 未初始化状态。在创建完XMLHttpRequest对象时,该对象处于未初始化状态,此时XMLHttpRequest对象的readyState属性值为0。
- 初始化状态。在创建完XMLHttpRequest对象后使用open()方法创建了HTTP请求时,该对象处于初始化状态。此时XMLHttpRequest对象的readyState属性值为1。
- 发送数据状态。在初始化XMLHttpRequest对象后,使用send()方法发送数据时,该对象处于发送数据状态,此时XMLHttpRequest对象的readyState属性值为2。
- 接收数据状态。Web服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。此时,XMLHttpRequest对象处于接收数据状态,XMLHttpRequest对象的readyState属性值为3。
- 完成状态。XMLHttpRequest对象接收数据完毕后,进入完成状态,此时XMLHttpRequest对象的readyState属性值为4。
此时接收完毕后的数据存入在客户端计算机的内存中,可以使用responseText属性或responseXml属性来获取数据。
- 设置获取服务器返回数据的语句
状态码:200-300是成功
if(xhr.status >= 200 && xhr.status < 300 ) {//处理服务器端结果result.innerHTML = xhr.response;//响应体,将数据进行局部渲染
}
2.Vue生命周期的阶段有哪些?
Vue生命周期分为四个阶段:
第一阶段(创建阶段):beforeCreate,create
第二阶段(挂载阶段):beforeMount,mounted
第三阶段(更新阶段):beforeUpdate,update
第四阶段(销毁阶段):beforeDestroy,destroyed
3.说一说HTML语义化?
<hander>表示页面头部
<nav>表示导航栏
<main>表示页面主要内容
<artical>表示文章内容
<footer>表示页面尾部
页面语义化的优点:更有利于修改与维护,更有利于理解页面结构,更有利于SEO。
4.如何判断对象是否属于某一个类
- typeOf可以判断number,string,undefined, null, Symbol类型的属性,但对于Array,正则对象,Date对象等数据使用typeOf打印出来是Object。
- instanceof可以来判断某个对象的类型,左边是对象,需要判断该对象是否属于某个类的实例对象或者是否为继承父类的构造函数。
- constructor可以判断typeof无法判断的对象类型
- 也可以使用Object.prototype.toString.call()来进行判断类型,这也是最常用的方法。
5.字符串相加编程题
由于字符串数据范围最大为100000,所以不能直接将字符串转化为数字进行相加减。
先判断是否有空字符串,如果一个为空字符串,那么直接返回另一个即可。
如果没有空字符串,我们规定,让s为长的字符串,t为短的字符串,从后往前进行运算。
在计算过程中,我们定义count变量来存放进位,ch进行两数相加,将相加得到的字符串放入str数组中以char类型进行存放。在相加时要判断t字符串是否小于0,小于0则不可继续参与加法运算。
运算完之后将char数组转化为字符串,然后判断进位是否为1,若为1,需要加上。
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* 计算两个数之和* @param s string字符串 表示第一个整数* @param t string字符串 表示第二个整数* @return string字符串*/public String solve (String s, String t) {// write code hereif(s.length() == 0 || t.length() == 0) return s.length() == 0 ? t : s;if(s.length() < t.length()) {String temp = s;s = t;t = temp;}int carry = 0;char []res = new char[s.length()];for(int i = s.length() - 1; i >= 0; i--) {int ch = s.charAt(i) - '0' + carry;int j = i - s.length() + t.length();if(j >= 0) ch += t.charAt(j) - '0';carry = ch / 10;ch = ch % 10;res[i] = (char)(ch + '0');}String output = String.valueOf(res);if(carry == 1) output = '1' + output;return output;}
}
6.链表编程题
将链表分为前半段和后半段,然后将后半段进行反转,反转之后将两段进行交叉连接。
首先使用快慢指针,慢指针一次走一步,快指针,一次走两步,当快指针走到最后一个时,慢指针刚好走到最中间。将后半段的链表放入一个新链表中。
将后半段链表进行反转,新建一个链表pre,将newhead的下一个链表节点用next进行标记,将当前节点指向pre(此时是在newhead链表中),将newhead更新到pre中,然后newhead指向next.
将两个链表进行重组(原链表前半段和newhead链表),先将newhead.next节点进行存储,然后将newhead.next指向head.next,再将head.next指向newhead。完成这一操作之后第一阶段的连接完成,将head指向下一个数字(数字2),newhead指向下一个数字(数字5),以此类推。
/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/
public class Solution {public void reorderList(ListNode head) {if (head == null || head.next == null || head.next.next == null) return;//找中点ListNode slow = head;ListNode fast = head;while (fast.next != null && fast.next.next != null) {slow = slow.next;fast = fast.next.next;}ListNode newHead = slow.next;//将slow的下一个置为nullslow.next = null;newHead = reserveList(newHead);while (newHead != null) {ListNode temp = newHead.next;newHead.next = head.next;head.next = newHead;head = newHead.next;newHead = temp;}}//反转链表private ListNode reserveList(ListNode head) {if (head == null) return null;ListNode pre = null;while (head != null) {ListNode next = head.next;head.next = pre;pre = head;head = next;}return pre;}
}
前端面试--模拟面试(三)相关推荐
- 前端模拟面试字数过23477万内容|刷题打卡
原文地址:https://juejin.cn/post/6948576107163549732 前端开发工程师面试 今天我请到两位朋友,面试官(小黄),面试者(小达)来进行如下前端模拟面试:(此处省略 ...
- 有三AI模拟面试服务上线,一对一服务助你求职
文/编辑 | 言有三 各位粉丝朋友们,今天正式上线有三AI模拟面试服务,在这里会给大家提供有偿的模拟面试,针对简历写作,项目技能,求职方向等做相关辅导. 模拟面试服务内容 要找到一份好工作可以是一个非 ...
- Java模拟面试总结
下面是针对一系列模拟面试后的情况进行面试题的总结和梳理,希望对大家有所帮助: 1.SpringBoot的启动类? @SpringBootApplication{@SpringBootConfigura ...
- 前端面试instanceof_面试造火箭,看下这些大厂原题
" 需求已改活已加,加班通宵看朝霞.终是上线已延期,bug还是改不完. 面试造火箭,工作拧螺丝,虽然我只想拧螺丝,可是我需要用造火箭的技术去寻找拧螺丝的工作,如何能在面试过程中让自己处于不败 ...
- 前端,通过面试去学习,综合(面试总结整理)
前言 已经将近3年半没有出去面试了,近期在面试,对照着前端八股文准备的过程中,不禁感叹前端的东西实在是多,涉及的面太多,整个行业环境也比较卷,没办法- 在此过程中的提升确实要比平时做版本迭代需求来得快 ...
- 【笔记-面试】《imooc -前端跳槽面试技巧》、《imooc- 揭秘一线互联网企业 前端javaScript高级面试》、《imooc-前端javascript面试技巧》
20190204:<imooc -前端跳槽面试技巧> 第01章 课程介绍 01-01 课程导学 一.一面知识点 1.面试技巧 页面布局类 2.css盒模型dom事件类 3.http协议类 ...
- python web前端开发面试_面试前端,听听别人怎么说!
分享一个人的面试经验: 一年半经验,百度.有赞.阿里面试总结 前言 人家都说,前端需要每年定期出来面面试,衡量一下自己当前的技术水平以及价值,本人17年7月份,毕业到现在都没出来试过,也没很想换工作, ...
- 3班的第二次模拟面试
大家好,我是雄雄,欢迎关注公众号[雄雄的小课堂]. 今天,三班进行了第二次模拟面试,还是和第一次一样,分为技术面试和人事面试,不过这次不一样的一点就是我亲自面的大部分开发学生. 通过这次模拟面试,大致 ...
- 前端面试技巧和注意事项_前端HR的面试套路,你懂几个?
原标题:前端HR的面试套路,你懂几个? 面试前端工程师对我来说是一件非常有意思的事,因为面试过程很大程度上也是自我提升的过程.经过这几年在行业里的摸索,我总结出了自己的一套很有效的面试前端工程师的方法 ...
最新文章
- 高可用、可扩展、稳定和安全的消息队列ActiveMQ特点分析
- python项目中requirements的巧用(一键导入所有安装包)
- 下一代安全工具:SHA-3
- ng: Can't bind to 'ngModel' since it isn't a known property of 'input'. - Angular 6
- mysql group_concat
- 事件处理 java_Java事件处理的4种方法
- 仅使用HTML和CSS实现的标签云效果
- c语言二级考试基础知识,2018年计算机二级考试《C语言》考点:C语言基础知识...
- idea 创建 spring 配置文件
- DOC窗口之cd命令(windows)
- 计算机网络常用术语WWW,计算机网络常用术语
- 超人气新书《SEO实战密码——60天网站流量提高20倍》火爆热销
- shell编程sed命令替换文件内容
- 关于中缀表达式的计算 和算符优先算法
- FTRL之FM和LR实战(使用稀疏数据进行实战)
- smoothdraw4_使用SmoothDraw享受徒手绘制和图像修改
- SuperMap iObjects C++在Linux上面的使用
- Python爬虫:给我一个链接,西瓜视频随便下载
- 存储技术和灾备解决方案要点
- 用户管理系统功能测试报告