某全栈面试
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了某全栈面试相关的知识,希望对你有一定的参考价值。
某全栈面试
几天前的面试了,把还记得的东西写一下吧……
-
给了一些代码然后让解释一下每行的执行过程。
大抵还是逃不过未声明就使用的变量,
var
的作用域提升,const
的重新赋值,大概执行如下:function foo() const a = ""; console.log(x); var x = "something"; a = ""; b = "something2"; foo(); console.log(x); console.log(b);
关键点在于:
var
会作用域提升,所以第一个console.log
是undefined
。var
的作用域在 function scope,离开 function 就会出现 reference 问题const
无法重新赋值- 没有使用
var
/const
/let
声明的变量会作用域提升到全局
-
Database
Database 这上面花的时间还挺多的,刚开始让写个 Query,主要就是
select
,count
,order by
和group by
这几个的嵌套。有一个问题比较有趣,面试官有问平常都直接在 SQL Query 里面进行操作的吗?
我的回答是:
Yes, because in the database design, the query optimization has been implemented by the database. I don’t feel like we need to repeat the work by fetching all the data from DB, then use second programming language to filter the data. It really hurts the performance and is a waste of the implementation.
中文:
对,在数据库的设计中已经实现了 Query Optimization(Query 优化)。我不觉得我们需要进行重复工作,将所有的数据从 DB 中拉出来,然后使用第二个编程语言去过滤数据。这对性能的损害挺高的,而且也浪费了原有的实现。
数据库在设计过程中会对 Query 进行优化,包括 indexing,aggregration 的优化等。这个也是另外一个很大的话题了,简而言之我觉得能用 query 解决的问题(基本上大部分需求都可以用 query 解决),没什么必要用第二门编程语言去再次修改。
问了项目中使用过那些数据库,然后就问了为什么使用 RDBMS,以及为什么使用 No SQL。
这个主要就是根据之前的业务场景和 concept 去解释 RDBMS 以及 No SQL 之间的区别:
-
在什么业务情况下适合使用 RDBMS?
在数据模型非常固定且变动不是很大的情况下比较适合使用 RDBMS
-
RDBMS 的优势?
稳定,数据不可变因此有固定的 schema。对比 No SQL,RDBMS 中一切的数据都以 table 的形式进行存储,schema definition 很少变更,因此 ACID 上更加可靠。
-
No SQL 的优势?
document based implementation,schema 主要以键值对的形式进行存储,具有灵活更新变动的优势。相较于 RDBMS,No SQL 更新的代价很低,因此在业务比较灵活多变的时候更加适合使用 No SQL。
这个主要就是对于两种数据库之间的理解,对于业务需求来说,没有说 RDBMS 一定比 No SQL 好或者 No SQL 一定比 RMDBS 好,只是在什么业务场景下更适合使用哪种数据库而已。
然后说了一下自己使用过 MongoDB,不过使用了 Mongoose 进行实现,面试官就问了一些 Mongoose 上的问题。
-
-
Linux
简单的问了下用没用过 Linux,然后问了几个 command 是什么意思
-
Java
问了下用没用过 Java,Spring 之类的。
问了一下 Hash Map 是什么。
Hash Map 的实现就比较基础的问题了,最新的版本实现是红黑树,之前原始的版本是 Array+LinkedList。
解释一下 hashing method,描述一下基础的实现。
-
React
React 实现一个 API 的 Fetch 和 Render,其实都不是很难,但是线上面试的时候还是有点紧张,容易出错。
-
Other Question
以上是关于某全栈面试的主要内容,如果未能解决你的问题,请参考以下文章