智课网一面&二面

node.js开发工程师

一面

1.node连过mysql嘛?用的什么库

mysql库啊

2sql语句----分组,统计总数

group by count()

3redis,有一个值要++,指令是什么?

incr

4koa,express用过吗

express没用过?

5进程,线程的区别,进程间通信的方式

610G文件,txt,每行都有一个数字(未超过long数字类型),将这些数字排序

面试官一直在引导我,真的是so nice!

大文件变成小文件,小文件内部排序,所有小文件归并

就是把大文件分成若干个小文件,然后分别对所有的小文件进行排序,进行一次比较,min(f1,f2,f3,fn),min值更新到新文件中

 

题目:有一个大文件,里面记录了若干数字,把这些数字进行排序。文件大小远大于内存大小。 
思路:内存极少的情况下,利用分治策略,利用外存保存中间结果,再用多路归并来排序。

(1)按可用内存的大小,把外存上含有n个记录的文件分成若干个长度为L的子文件,把这些子文件依次读入内存,并利用有效的内部排序方法对它们进行排序,再将排序后得到的有序子文件重新写入外存;

(2)对这些有序子文件逐趟归并,使其逐渐由小到大,直至得到整个有序文件为止。

7一个数组,然后存储数字,两两组合相加=key,但是一个数字只能用一次,找出满足条件的对数

我最开始想到的就是两次for循环,时间复杂度大,另外找出的可能重复

先排序,在一次遍历

定义两个变量,一个index=0,另外一个index=length-1,然后分别让他们向++,--方向移动,判断加和与key的比较,根据比较值,移动位置。。。。。。

1.蛮力算法:时间复杂度为O(n^2)

 2.排序法:
       时间复杂度为O(logn) 对数组先进行排序,定义begin和end分别指向数组的
       第一个元素和最后一个元素,分为以下三种情况:
         1:若array[begin]+array[end]<某个数(number)  则 begin++,即为:begin向后移动一位
         2:若array[begin]+array[end]>某个数(number)  则end--,即为:end向前移动一位
         3:若array[begin]+array[end]=某个数(number)  则begin++,end--;即为:begin向后移动一位,end向前移动一位

8你的问题

我问了接口1s100次怎么做?

面试官居然说有可能有现成的库?

二面

1实习开始时间,日,实习几个月?

10号?3月?

2团队怎么合作

gitlab?分支?主分支?提交代码注释中文?英文?prd评审?前端?产品?

3git规范?分支?

4mysql和oracle区别?,不如说sql语句的区别?

安全&pl/sql 存储机制

关于MySQL和Oracle的主要区别:

a   大家比较容易想到的就是MySQL是开源的项目,开源=免费所以一些中小企业考虑数据库的时候MySQL肯定是首选。Oracle是Oracle公司推出的一款成熟的数据库产品是闭源同时也是收费的,但是Oracle官网是不限制下载的(只要你有账号)一般的开发测试是没问题但是你如果来拿来商用而又不给Oracle付费的话,肯定是被Oracle强大的法务部门给狠刮一块肉(其实中国的国情大家都懂的,很多银行、政府部门就算拿来用了没人说破Oracle还不是睁一只眼闭一只眼)。
b   SQL语法的不同,MySQL较为灵活,Oracle较为严格(具体就是单引号,分页的处理,主键的自动增长),这里涉及的内容太多网上的资料也很多,我就不写了。
对于事务的支持。这一点也是大家经常说到的,MySQL对于事务默认是不支持的,只有某些存储引擎中如:innodb可以支持。而Oracle对于事务是完全支持,不管是OLTP还是OLAT都是支持的。
c   MySQL是单进程多线程,Oracle是多进程(在Windows下也是单进程)。具体的例子就是Windows操作系统和Linux操作系统的区别,Windows下只能使用一个用户,或者你可以在不同用户之间做切换,而Linux是多用户或者相同用户可以同时连接操作系统,其实这一点也就引发了下面这点的不同。
数据库和实例以及用户之间的关系。我们知道用户操作数据库不管MySQL还是Oracle都是通过实例来的,那么实例和数据库、数据库软件以及用户之间是什么关系呢?在MySQL和Oracle的情况下我们来分别讲解下:
首先MySQL的实例是用户登录是系统分配给用户的,而用户必须是先在MySQL中创建好,然后登陆用户mysql -u user_name -p然后使用show databases; 命令查看数据库,在使用 use database_name database; 选择数据库,这样才可以对数据库进行操作。简单的关系就是:instance > database 
其次是Oracle,Oracle的实例是在创建数据库时就默认创建好的,而用户基于数据库实例,实例之间可以没有关系所以其中的用户也不尽相同,你登录不同的实例就相当于登录了不同的数据库,登陆的命令也能简单sqlplus user_name/password@IP:port/instance_name 其中可以把IP地址,端口号,实例名写在一个TNS文件中取一个别名,登陆的时候输入这个别名就行了。简单的关系就是:instance = database

5部署你自己部署的嘛

yeah

6你有问题吗

我问了redis内存未来得及更新,拿到数据是坏的怎么办,面试官居然说我不清楚你们的业务是什么样的,<( ̄︶ ̄)↗[GO!]

你可能感兴趣的:(校招面经)