面试|前端面试题解答(九)

1、简述git常见的操作命令和含义,描述一个你在操作git时让自己印象较为深刻的问题以及解决过程 git config 操作git管理中的配置信息
git init 初始化git本地仓库
git add 添加新文件到git管理
git commit 提交暂存区文件到本地仓库
git push 将本地仓库文件推送远程仓库
git pull 将远程仓库文件拉取到本地并合并到当前分支
git fetch 拉取远程仓库中指定分支文件
git branch 查看/添加/删除分支
git checkout切换分支
git merge合并分支
git tag 添加/查看/编辑标签
git stash 暂存文件
git log / git reflog 查看提交历史记录
git reset 版本回退

平时多整理出现的问题,在面试的时候经常会遇到面试官询问开发过程中的印象深刻的问题,印象深刻的问题不一定是非常复杂的问题!
如:文件冲突的问题及解决方案
如:版本回退了,但是解决完项目中的问题之后,回退不回去了!幸亏当时开发过程中我自己有记录自己的操作的习惯,将回退之前的版本信息都做了记录,解决过程中找出了当时回退之前的历史记录进行了版本更新
提示:平时多整理自己遇到的问题,将这样的问题梳理记录到一个(在线)文档中,面试的时候或者以后工作过程中,都可以翻出来使用!
2、什么是NodeJS,谈谈你对NodeJS的认识 NodeJS是一个JavsScript运行时环境,支持了JavaScript服务端应用开发场景;
NodeJS本身具有单线程、事件驱动、Chrome V8引擎、JavaScript运行时等特点;
NodeJS和其他的后端语言环境相比较,技术发展更加迅速,版本迭代更快,所以一般要求稳定性较高的后端项目开发很少会直接选择NodeJS进行开发,但是NodeJS本身具备的特性一方面可以支持后端开发,以后随着新特性的添加发展会更好,另一方面NodeJS对于前端开发框架的支持非常友好!
3、为什么说NodeJS是事件驱动的?底层实现逻辑是什么样的呢? NodeJS底层是单线程运行机制,常规情况下每次都只能服务一个请求,操作效率就会非常低下;为了提高请求处理效率,让NodeJS应用可以同时服务多个请求,提供了自己的事件驱动机制,在单线程接受到请求之后直接分发给后端处理函数进行处理,在处理过程中就可以将请求临时挂起,继续处理后续的请求;可以在相同的时间段处理更多的请求;被处理的请求处理完成后通过事件通知单线程找回请求并且进行响应,所以NodeJS是单线程工作机制、同时包含了事件驱动的工作方式高效率的处理并发请求;底层是通过EmitEvent对象实现事件创建和触发工作的
加:有了解过你们公司使用的是什么服务器吗?都是什么样的配置? 提示:并不是所有的面试题或者笔试题都要你回答正确!
下下策:支支吾吾… 下策:开发时用的服务器基本了解,公司的这个服务器我还真没有去了解过
中策:这个跟运维那边的同事合作的时候有简单了解过,好像用的是购买的云服务器,具体配置信息不是很清楚! 上策:赶紧去看看,多准备一些资料
4、在项目中你都用过哪些Node相关的模块,简单描述一下它们的含义 fs文件操作模块
http web服务模块
path 路径处理模块
url 地址处理模块
trim 空格处理模块
querystring 查询字符串处理模块
express WEB应用开发框架
qs 查询字符串处理模块
express-session 会话管理模块
parse-cookie cookie数据管理模块
svg-captcha 验证码模块
serve-favicon 服务器LOGO模块
5、Express中都有用过哪些中间件? 中间件一般包含内置中间件、第三方中间件和自定义中间件
内置中间件如静态文件处理、POST参数处理中间件等等
第三方中间件如POST参数、session会话管理、cookie数据管理、formidable文件上传、svg-captcha验证码等
自定义中间件一般用在拦截所有请求之前或者所有请求之后,所有请求之前自定义权限验证、请求参数验证等中间件;请求之后一般会设置共同响应、错误中间件
6、什么是路由?项目中你是怎么实现路由的? 路由描述的是项目中用户的请求进行分发处理的中间组件
NodeJS基本应用中我们通过选择结构实现基本路由操作,Express项目中通过构建的独立对象app或者router实现了路由分配
7、web应用一般都是多个用户同时访问的,项目中是如何解决多个用户使用的数据互相独立的问题的? 【面试|前端面试题解答(九)】WEB应用开发过程中,主要工作在服务器上,服务器和WEB应用会提供各种多用户管理模式,如多进程模式、多线程模式,单线程事件驱动模式等等
我们前端使用的NodeJS应用中,主要是单线程事件驱动模式实现多用户并发,多个用户的数据通过每个请求所属的session会话进行管理,每个用户的session都是独立的一个数据空间,和其他用户的session不会冲突
8、什么是数据库? 数据库是软件解构中存储数据的仓库组件!主要提供数据持久化存储和操作的服务!
9、MySQL中怎么创建和删除数据库? 可以通过界面操作软件,图形化界面中创建和删除数据库
也可以通过SQL语句的方式创建和删除数据库
-- 创建数据库 create database 数据库名称 default charset 'UTF8'; -- 删除数据库 drop database 数据库名称;

10、假设MySQL中已经存在用户表user 面试|前端面试题解答(九)
文章图片

使用SQL语句完成下面的业务操作
① 注册用户时,判断账号是否已经存在
select * from user where username = "要注册的账号"

② 会员tom登录时,同时允许使用账号或者手机号码登录系统
select * from user where (username = "tom" or phone = "15680439981") and password = "6df23d9a0b"

③ jerry更新用户资料时,更新自己新的昵称-茅尔丝
update user set nickname = "茅尔丝" where username = "jerry"

④ 用户tom查看自己的资料绑定新的手机号码18899008877
update user set phone="18899008877" where username = "tom"

⑤ 用户jerry要销毁自己的资料,如何注销自己的用户信息
delete from user where username = "jerry"

    推荐阅读