Giter VIP home page Giter VIP logo

interview_internal_reference's Issues

1.1.3 思路完善

BST(二叉搜索树)在wiki中已经有详细的描述了,下面陈述一下我个人的思路:
对于bst的搜索,有两种常用的编码实现,递归和迭代。对于普通的通过key来查找,
递归和迭代都很容易实现,如果添加一个影响因子(比如说通过key查找的同时,还要满足父节点的value是多少...),这样通过递归实现,也就是添加一个参数,函数体里添加一个逻辑即可,但对于迭代来说,实现的复杂度就增加了很多。本例就是一个典型,所以这题推荐使用递归实现,主要因为递归实现难度不高。

下面分析一下,本题用递归实现的方式。(从不同的角度看问题,就有不同的解决方案)


求bst第k小的节点?

角度1:也就是示例中的解法,我用自己的语言翻译一遍:如果存在某个节点n,她的左子树中节点的个数是k-1,那么这个节点n就是要找的节点。此时会存在3种情况:(bingo,左子树节点个数正好是k-1;左子树节点数大于k-1,那么以节点n的左子节点为基础,重新找;左子树的节点数小于k-1,说明要找的节点在节点n的右子树上,以n的右子节点为基础,继续查找,此时k因子也会有响应的调整),这种解法,我称为"多次左子树遍历"

角度2:基于bst的特性,中序遍历的结果,取第k个节点,就是问题的解,这种解法,我称为"中序遍历 + 计数"

两种解法的对比:

  • 两者都是基于递归来实现
  • 多次左子树遍历,会存在多次遍历; 中序+计数的方式则不会,对性能有要求的,可以选择后一种解法

1.3.5 答案有误

原题目:
给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度

分析:答案给的two pointers解法,但是前提是数组是有序的才行

修改建议:
把题目中数组改为从小到大排列的有序数组
或修改算法,先将数组排序,这样时间复杂度为O(nlogn)

请教问题

linux的零拷贝和写时复制这中特性有什么书籍或者资料可以系统学习吗?

1.1.9 输入 ping IP 后敲回车,发包前会发生什么?这题回答讲的不明白

ping目标ip时,如果在相同网段直接先查询arp缓存,如果找到目标ip的mac地址,直接发送出去,如果缓存中查不到,则从相同网段的网卡发arp问目标ip的mac地址,拿到mac地址后发送出去。如果不在主机的网段里,会查询默认网关ip,接着查询arp缓存,是否有网关的mac地址记录,如果有,填充该mac地址,发送出去,如果没有,发arp问网关的mac地址,得到结果,发送出去。

关于面试问题的应用场景

RT,我想对于绝大多数(特别是第一次求职的)应聘者来说,对目标公司的业务是非常陌生的,在这样的情况下,生搬硬套地强行记忆诸如:

给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点
jvm的垃圾回收机制?
java类加载机制?如何实现自定义类加载器?findClass与loadClass的区别?

这样的问题,即便是用九牛二虎之力记住了,也是没有根基的浅层记忆。如果在这些面试题的后面附上不光是简单的答案,更加上一些实际在此公司中业务场景中,为何需要这样的知识的解说,那样不仅会容易理解很多,对面试者准备来说,时间也花得更加的有意义,学习到了真正的东西。

倒数第K个节点

设置一个头结点,它的下一个节点是原始指针,设置两个指针,一个快指针,一个慢指针,快指针多走n+1步,这样当快指针到达尾部的下一个节点的时候,慢指针的下一个节点就是要删除的节点

var removeNthFromEnd = function(head, n) {
    let dummy = new ListNode(0);
    dummy.next= head;
    let slow =dummy;
    let fast = dummy;
    while(n>=0){
        fast = fast.next;
        n--;
    }
    if(!fast) return head.next;
    while(fast!=null){
        fast = fast.next;
        slow = slow.next;
    }  
    slow.next = slow.next.next; 
    return dummy.next;

};

1.1.2 sqrt实现

var EPSINON = 0.0000000001;

function sqrt2( ){
    var low = 1.4, high = 1.5;
    var mid = (low + high) / 2;
    while (high-low>EPSINON){
		console.log(low, high, mid)
        if (mid*mid>2){
            high = mid;
        }
        else{
            low = mid;
        }
        mid = (high + low) / 2;
    }
    
    return mid;
}
console.log(Math.sqrt(2),  sqrt2())

其中,mid*mid>2符号反了

建议

建立一个页面,类似左边是目录,右边是内容,可以便于查看。

Can not clone the repo: File name too long

Cloning into '~/0voice/interview_internal_reference'...
remote: Enumerating objects: 263, done.
remote: Counting objects: 100% (263/263), done.
remote: Compressing objects: 100% (169/169), done.
remote: Total 263 (delta 96), reused 247 (delta 93), pack-reused 0
Receiving objects: 100% (263/263), 367.17 KiB | 4.32 MiB/s, done.
Resolving deltas: 100% (96/96), done.
error: cannot stat '1.3.0 在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行 IO 读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性.md': File name too long
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

数据库优化思路

2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0

--------------------分割线-------------------------------
不是非我杠精,关于null,isNull,isNotNull其实是要看成本的,是否回表等因素总和考虑,才会决定是要走索引还是走全表扫描

也给大家找了一个作者的博文,仅供参考!!!

同学,学成了就来阿里天猫国际试试吧,实习社招都可以

天猫国际是**消费升级的第一跨境平台,是阿里经济体5年2000亿美金进口承诺的主力军。2019年天猫国际技术部和考拉合并成立了阿里巴巴大进口技术部,是阿里巴巴国际化战略的核心技术部门。致力于进口业务的技术突破和创新,助力**的消费者实现“买遍全球”的需求,跨入未来的万亿级市场。想了解更多的话,直接联系我吧,我帮你组内直推,大量HC,走过路过不可错过。
邮箱:[email protected]
微信:isHunterZhang

百度3.4.8

1.建立一个键值对
2.遍历数组
3.每次读到一个数
3.1如键值对为空,则填入这个数及值1
3.2如数与键相同,则值加1
3.3如键与数不同,则值减1,当值为0时清除键
4.可运行到数组结尾,也可判断当值大于等于数组剩余未遍历元素个数的二分之一时退出

git clone failed

on windows:
$ git clone https://github.com/0voice/interview_internal_reference.git
Cloning into 'interview_internal_reference'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 733 (delta 8), reused 4 (delta 1), pack-reused 710
Receiving objects: 100% (733/733), 514.31 KiB | 54.00 KiB/s, done.
Resolving deltas: 100% (349/349), done.
error: unable to create file 02.华为篇/2.1.0 static有什么用途?.md: Invalid argument
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

1.1.9 答案完善

#9 里面提得非常详细,原文我觉得应该要修改一下
再者,还要考虑对应网卡是否是多路访问网络

ping目标ip时,先查路由表,确定出接口

  • 如果落在直连接口子网内,此时若为以太网等 多路访问网络 则先查询arp缓存,命中则直接发出,否则在该接口上发arp询问目标ip的mac地址,取得后发出,若为ppp等 点对点网络 ,则直接可以发出;
  • 如果查表落在缺省路由上,此时若为以太网等 多路访问网络 则先查询网关arp缓存,命中则直接发出,否则在该接口上发arp询问网关的mac地址,取得后发出,若为ppp等 点对点网络 ,则直接可以发出;
  • 若查表未命中,则返回不可达。

11.1.6 MongoDB和关系型数据库术语对比图.md

写了一下MySQL与MongoDB的对比

概念对比

MySQL MongoDB
Database Database
Table Collection
Row JSON or BSON
Column Field
Index Index
table joins(表连接) $lookup或嵌套文档
primary key(主键) _id
统计分析 aggregation
Redo日志 Journal日志
Binlog日志 Oplog日志

模式语句对比

SQL模式语句 MongoDB模式语句
create table db.test.insert({x:1})或db.createCollection("test")
alter table add column db.test.update({},{'$set':{a:2}})
alter table drop column 删除字段$unset
create index db.test.createIndex({x:1,a:-1})
drop table或者truncate table db.test.drop()
drop database db.dropDatabase()
insert into db.test.insertOne()或db.test.insert()
select col1 from test order by a limit 1,2 db.test.find({xxx:10},{x:1,a:1}).sort({a:1}).skip(1).limit(2)
update db.test.update({x:1},{$set:{a:6}})
delete from db.test.deleteMany({x:1})

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.