提了离职,又开始出来找工作了,总体来说面试官人很好,问的都是老生常谈的问题,很有诚意,但是我好久没背八股,加上是最近第一次面试,没有准备好,寄了!

难度: 简单

我百度加上自己理解尝试写的答案,不对的请务必指正

自我介绍

英文自我介绍,项目介绍,项目细节,兴趣爱好。
英文这块一定得准备,各个问题都要事先想好怎么答,大部分国人的英语水平肯定达不到随时沟通的程度,不准备肯定寄。

前端部分:

怎么实现图片懒加载
我们是先把一张像素低的图片作为img的src,并把正常像素图片作为img的一个属性,这样当图片资源刚加载出来但是没显示的时候,默认加载低像素图片节省资源,然后等用户能够看到图片以后,再通过js把src替换成正常图片。

js原型链
原型链就是js实现继承的一种方式,js是一种函数式编程,他的构造函数里有一个原型对象,然后每个通过构造函数new出来的实例的原型,都可以指向构造函数的原型对象,然后构造函数的原型可以指向Function的原型对象,最终指向Object。这是一种类似于树结构,不过是倒着指向的,来使实现的继承,ES6以后就以class的方式写代码,跟传统java的继承方式差不多,用extends的方式进行继承, 底层的实现其实也是原型链,相当于语法糖。

js闭包
闭包就是为了实现传统面向对象里的封装,就是如果想让函数修改一个变量,通常做法是通过在函数外面定义全局变量的方式,但这样这个变量就不安全,谁都能访问到。现在就是可以通过函数自我调用的方式,return它自己,这样就可以把变量定义在函数里面,但是外面却能获取它的值。就相当于实现了java里的封装。这也是因为以前js的局限性只能这么去实现,Es6以后就是通过类里面getset方法的形式实现封装。

强缓存与协商缓存的区别
强缓存是从本地直接取得缓存
协商缓存是如果取得强缓存失败,浏览器就会发送请求到服务器,取得新的缓存信息

ES6有哪些新特性
取消使用var 普遍使用let和const代表变量和常量
对象解构,把变量赋值给大括号可以直接获得对象中同名的属性
属性传参时用扩展运算符三个点可以直接把属性传给下面组件
新增了类和对象,相当于面向对象编程
在数组和集合中也有一些新增内容

箭头函数和function的区别
箭头函数里面this没法指向调用者,因此是undefined,我通常做法是把对象当作参数传进去当作this.
箭头函数不能作为构造函数使用
function有变量提升,箭头函数不行

React和原生js的区别
我觉得最大的区别就是React使用了虚拟dom,每次渲染的时候减少了重绘次数,这样节省了内存,提升了加载速度. 而真实dom的元素体积较大,不轻易使用js加载页面
其次React框架里面只有一个div是html,其余所有内容都由js生成
最后React是基于组件的,提升了代码的复用性

React事件处理机制
我们日常写的事件放在某元素的jsx里,然而当jsx进行渲染的时候,它没有把事件加载到该元素对应的真实dom,而是绑定到顶层的document上面,由document监听所有的事件,调用对应的事件函数。
这样统一管理的优点就是提升了性能,也解决了兼容问题

有没有使用过hooks
hooks是react新特性,使得函数组件和类组件一样拥有生命周期以及状态。 毕竟类组件使用过多,不利于js函数式编程风格的特性。
useState:使得函数组件拥有state
useEffect:使得函数组件拥有componentDidMount,componentDidUpdate 和 componentWillUnmount等生命周期
useContext:使得函数组件可以数据共享
还有useCallback useReducer useRef等其他功能

React中state的作用
State用于表示类组件的状态,函数组件和样式组件都是无状态的,通常一个组件里会根据状态的不同,来渲染不同的效果。需要通过调用SetState来进行修改组件的状态,否则组件无法重新渲染。

为什么虚拟dom能提升速度
1.虚拟dom节点体积很小,因此比较虚拟dom会比比较真实dom需要更少的内存。
2.由于diff算法只更新存在差异的节点,不修改其他节点,极大程度上做到了节点复用,减少了重排次数。

虚拟dom用到的diff算法怎么实现的
dom是树形数据结构,然后虚拟dom是一种不同的树形数据结构,两棵树的节点一一对应。
diff算法通过广度优先搜索来找出两颗树的区别,就是比较每个树节点的类型和属性是否相同,把其中存在差异的节点放到一个补丁数组里面,最后就按照补丁数组来更新真实的dom树,这样一来就减少了重排的次数,提升了效率

React生命周期
挂载: 插入了真实dom,页面已经加载好,此时会调用componentDidMount()函数,相当于js里的window.onload()
更新:当组件的 state 或 props 发生变化时,组件就会更新,此时会重新渲染页面,并且会调用componentDidUpdate()函数
卸载:组件从dom中被移除,此时会调用componentWillUnmount()函数

对于https里的header有哪些了解
平时常用的几个:
Request部分:
Accept: 客户端可以接收的内容类型
Cookie:用于存储一些数据,它的格式是键值对,数据会随着http请求发送给服务器
Host : 请求服务器的域名
Response部分:
Expires: 控制缓存的过期时间
Cache-control:控制缓存的一些信息

后端部分:

你以前做过后端吗,在项目中的职责是什么?
.

c#怎么实现扩展函数
函数的第一个参数用this修饰,用于指定扩展的对象,然后该函数需要是static的。

什么是委托
这个就是相当于js里的函数式编程,将函数看成一个对象,当把某函数传入委托构造器并创建委托对象,该委托对象就具有这个函数的功能,可以直接调用。

面向对象的特性
封装,继承,多态。 相较于面向过程,对象的概念更贴近于世间万物,使人容易理解。

重写与重载的区别
重写:指子类实现父类的函数
重载:指一个类里面参数不同的重名函数

数据库的四特性acid是什么
a : atomic 原子性,一个事务看成一个原子,要么全部完成,要么全部不完成,如果事务执行时发生错误需要进行回退
c : consistency 一致性
i : isolation 隔离性,有4个事务隔离级别,说明了不同情况下对数据库的并发操作,以及造成的影响
d : durability 持久性,事务结束以后,对数据库的修改是永久的

个人部分:

个人的优缺点

怎么保证工作稳定性

2022.7.14 花旗银行外包面试相关推荐

  1. 2022.08.22 索尼外包面试

    索尼外包,这位面试官人很好,非常客气,当时就给了offer,然后问的题目也不难,都是非常简单的八股,他们甲方很不错我确实是很想去的,只是感觉不能一直做外包了,得想办法跳出这个坑. 难度: 简单 我百度 ...

  2. 3934:C 10 Aug 2022 00:14:04.239 # Fatal error, can‘t open config file ‘/usr/local/redis/./redis-conf

    报错:3934:C 10 Aug 2022 00:14:04.239 # Fatal error, can't open config file '/usr/local/redis/./redis-c ...

  3. 2022年最新的Android面试大厂必考174题(附带详细答案)

    前言 互联网行业竞争也越来残酷,我们工程师只有不断地学习,提升自己的能力才更保障你拿到更好的薪水,进入理想的企业(阿里.字节.腾讯.美团 等等-) 但目前很多人出现了一系列的疑惑问题就是: 以你目前的 ...

  4. 最新 2022百威英博AI面试真题题库

    [#AI面试# 2022百威英博AI面试真题题库 #快消面试# ] 百威2022的ai面试已经改成了9道中文行为面试题,难度题量都比较大.建议大家提前准备. 百威2022AI面试真题 面试形式:中文面 ...

  5. English Learning - Day8 作业打卡 2022.12.14 周三

    English Learning - Day8 作业打卡 2022.12.14 周三 引言 1. 学习让我感觉很棒.(什么关系?动作 or 描述?主语部分是?) 2. 她忽然想起来钥匙放另一个包里了. ...

  6. TS:解决win10的wsl2下Ubuntu系统里中文乱码问题(已解决)-2022.3.14

    TS:解决win10的wsl2下Ubuntu系统里中文乱码问题(已解决)-2022.3.14 目录 文章目录 TS:解决win10的wsl2下Ubuntu系统里中文乱码问题(已解决)-2022.3.1 ...

  7. 2022.3.14密码学基础题【网络攻防CTF】(保姆级图文)

    目录 解码软件工具下载(2022.5.13) 1. 埃特巴什密码 `flaghahactfisnice` 2. 疑惑的汉字,当铺密码 `CTF{RM}` 3. 莫斯密码 flag 4. 培根密码 fl ...

  8. java发布WCS服务到GeoServer服务器并解析XML生成可下载的WCS服务数据url(2022.2.14)

    GeoServer上的WCS服务发布调用及解析生成可下载为Tif的WCSUrl 2022.2.14 所用软件环境(Java.Tomcat.GeoServer.Google Browser.Eclips ...

  9. 递推法与递归法2022.3.14

    递推法与递归法2022.3.14 递推法是用于数值求解的一个重要算法. 存储型的递归和递推: 存储就加个数组就好了吧. 三角形递推,先赋好值然后从后往前递推.甚至都不需要额外的空间,最后返回a[1][ ...

最新文章

  1. iOS开发笔记(二):block循环引用
  2. doxygen如何生成JAVA文档_有用Doxygen生成文档的吗?发一篇Doxygen的使用文档给大家,从网上搜来的。...
  3. mysql-bin.000001文件的来源及处理方法[转]
  4. 全球最大的免费暗网托管服务商 DH 再度被黑关闭
  5. HTML学习总结(4)——表格/块/内联元素/iframe/颜色/脚本/实体
  6. Java开发过程中碰到的问题及解决方案
  7. 一刀工具箱 - 古诗文查询
  8. 解决主机ping不通xp虚拟机
  9. 最低报酬率计算机公式,股票报酬率计算公式
  10. c++学习笔记 第四部分
  11. 带隙基准及LDO电路
  12. 数据分析方法论2:交叉平均分析法
  13. Makefile -fPIC 选项
  14. gradle全集 下载 蓝凑云(非百度网盘)
  15. 你偷看的小黄片,全被监视了!网友:隐私早已。。。
  16. 八款windows设计软件,经典永流传
  17. Postman+Newman执行自动化测试
  18. 小米电视通过自定义hosts文件去除开机视频广告的方法,亲测有效!
  19. Markdown使用技巧总结——字体,颜色,字号,背景,首行缩进等
  20. Hardening Linux

热门文章

  1. 【转】linux服务器的Gzip文件压缩方法
  2. 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
  3. Resnet_50网络结构详解
  4. 12306抢票JS脚本
  5. Android pm命令详解
  6. Vue3.x使用富文本tinymce-vue
  7. 宁波市教育学院计算机系主任,欢迎宁波诺丁汉大学计算机系主任白瑞斌教授一行到访南科大...
  8. java classpath 遍历_Java 读取JAR文件信息
  9. sonar问题:Font declarations should contain at least one generic font family
  10. 盘点人工智能重点技术领域