360一面

1、你认为Java最有意思的是什么
作为一名JAVA的 程序员,首先你是一名发明家,因为你可以new出无数个对象,其次你是一位皇帝,你可以派你new出来的对象去做任何事情。
在这些对象中,我们首先要给对象分类,就像世间万物,物以类聚,人以群分。
作为地球的霸主,人来说,我们都是同一个类,叫做人类。和Java的类一样,都具有继承,多态,封装和抽象等特征。
  Java的四大特性是继承,封装,多态和抽象。这就好比人的出生一样,我们是被父母给New出来的,所以,我们继承了他们的基因,我们出生后,不需要知道是如何被New出来的,因为整个出生的过程,都已经被父母和医生,以及生理的变化给封装起来,当来到这个世界以后,我们学会了哭,学会了笑,这就是多态,同一个人,有着不同的表现形式。对于刚刚来到这个世界,我们一无所知,正因为我们的无知,才有了抽象的方法。所以那些抽象的方法并不能被实例化,除非等到我们慢慢的长大,才可以重写他们的方法。
2、如何把写的类打包成jar包,让别人调用
如果其他类需要调用,可将这个jar包导入工程就可以使用jar包里的类了
先把编译好的文件在你本地的doc环境打包
jar -cvf .....
把包导入到你的项目lib下
3、写一个类需要注意的是什么
1.首先一个java文件中至多只能有一个类被声明为public(可以没有public类),且所在java文件名需要与这个public类同名.
2.一般的规范是类名首字母大写,如果类名包括若干个单词比如HelloWorld,则所有单词的首字母需要大写
3.字段(又称变量):说明属性、特征,设计时要考虑字段名、数据类型、访问权限等方面,还可以设置初始值。出于保护数据的需要,多声明为private权限;
方法(也称函数):说明行为、功能,设计时要包含方法名、参数、返回值的数据类型、访问权限等内容,方法名后的圆括号不能省略。
类中的方法首字母应小写(构造方法除外,因为构造方法与类同名),如果方法名包含若干个单词,比如doSomething,则应除首字母小写外,方法名中的其它单词首字母应大写
4、用户登录怎么访问浏览器,动作是什么
假设你用一个全新的浏览器(第一次启动的那种),访问百度( http://www.baidu.com/),在你敲入网址并按下回车之后,将会发生以下神奇的事情:
1、浏览器先尝试从Host文件中获取 http://www.baidu.com/对应的IP地址,如果能取到当然万事大吉大家都能嗨,如果不能,就使用DNS协议来获取IP咯。
2、在DNS协议中,PC会向你的本地DNS服务器求助(一般是路由器),希望从本地DNS服务器 那里得到百度的IP,得到就好,得不到还得向更高层次的DNS服务器求助,最终总能得到百度的IP。
3、得到百度的IP,下一步是使用TCP协议,建立TCP连接。
4、在TCP协议中,建立TCP需要与百度服务器握手三次,你先告诉服务器你要给服务器发东西 (SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(ACK),总共来回了3次,称为3次握手。
5、不过,建立TCP连接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上。虽然已经知道IP,但并无啥用(比如说,你在广东,你知道北京的地理坐标经纬度就能到北京了?你得知道有哪些路通往北京吧你得准备盘缠吧你得花时间吧)。
6、为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。
我们都知道,你的PC和百度服务器之间一般会有许多路由器之类的东西,IP协议指定了出发地(你的PC)和目的地(服务器);你的数据会经过一个又一个路由器,OSPF决定了会经过那些路由器(用一种叫路由算法的玩意,找出最佳路径);从一个路由器怎么传给下一个路由器?这是ARP协议的JOB,ARP负责求下一个节点的地址(我们不止是要目的地,还要中间节点的地址)。
7、IP协议使用的是IP地址,整个发送过程中只涉及出发地和目的地2个IP地址,而ARP协议使用的是MAC地址,整个发送过程中涉及到每一个节点的MAP地址
8、现在,我们能和服务器通信,还建立了TCP连接,下一步干嘛,当然是用HTTP协议请求网页内容咯。
9、你发个HTTP请求报文给服务器,如果服务器禁止你访问它就给你回个"Forbidden",如果它暂时挂掉了就给你回个“内部服务错误”,如果它正常才给你回个“OK“并将你要的数据传给你;如果你还需要其它的东西再去跟它要(它一般还会给你的-_-)。
10、你收到了服务器的回复,是一坨HTML形式的文本。浏览器必须要能够理解文本的内容,并快速地渲染到屏幕上,渲染出来后,你就看到百度的首页了
5、B树和B+树的区别
B-
 性质: 是一种多路搜索树(并不是二叉的):
           1. 定义任意非叶子结点最多只有 M 个儿子;且 M>2
           2. 根结点的儿子数为 [2, M]
           3. 除根结点以外的非叶子结点的儿子数为 [M/2, M]
           4. 每个结点存放至少 M/2-1 (取上整)和至多 M-1 个关键字;(至少 2 个关键字)
           5. 非叶子结点的关键字个数 = 指向儿子的指针个数 -1
           6. 非叶子结点的关键字: K[1], K[2], …, K[M-1] ;且 K[i] < K[i+1]
           7. 非叶子结点的指针: P[1], P[2], …, P[M] ;其中 P[1] 指向关键字小于 K[1] 的子树, P[M] 指向关键字大于 K[M-1] 的子树,其它 P[i] 指向关键字属于 (K[i-1], K[i]) 的子树;
           8. 所有叶子结点位于同一层;

 搜索:从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点;
      1. 关键字集合分布在整颗树中;
      2. 任何一个关键字出现且只出现在一个结点中;
      3. 搜索有可能在非叶子结点结束;
      4. 其搜索性能等价于在关键字全集内做一次二分查找;
      5. 自动层次控制;
      6. 由于限制了除根结点以外的非叶子结点,至少含有 M/2 个儿子,确保了结点的至少利用率,其最底搜索性能为lgN;
      7.B- 树的性能总是等价于二分查找(与 M 值无关),没有 B 树平衡的问题;
      8. 由于 M/2 的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占 M/2 的结点;删除结点时,需将两个不足 M/2 的兄弟结点合并;
B+
        性质:B+ 树是 B- 树的变体,也是一种多路搜索树:
           1. 其定义基本与 B- 树同,除了:
           2. 非叶子结点的子树指针与关键字个数相同;
           3. 非叶子结点的子树指针 P[i] ,指向关键字值属于 [K[i], K[i+1]) 的子树( B- 树是开区间);
           4. 为所有叶子结点增加一个链指针;
           5. 所有关键字都在叶子结点出现;


        B+ 的搜索与 B- 树也基本相同,区别是 B+ 树只有达到叶子结点才命中( B- 树可以在
非叶子结点命中),其性能也等价于在关键字全集做一次二分查找;
        B+ 的特性:
           1. 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
           2. 不可能在非叶子结点命中;
           3. 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;
           4. 更适合文件索引系统;
B*
        B+ 树的变体,在 B+ 树的非根和非叶子结点再增加指向兄弟的指针;

     B* 树定义了非叶子结点关键字个数至少为 (2/3)*M ,即块的最低使用率为 2/3 (代替 B+ 树的 1/2 );
        B+ 树的分裂:当一个结点满时,分配一个新的结点,并将原结点中 1/2 的数据复制到新结点,最后在父结点中增加新结点的指针; B+ 树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针;
        B* 树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制 1/3 的数据到新结点,最后在父结点增加新结点的指针;
         所以, B* 树分配新结点的概率比 B+ 树要低,空间使用率更高;
小结:
B 树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;
        B- 树:多路搜索树,每个结点存储 M/2 M 个关键字,非叶子结点存储指向关键字范围的子结点;所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;
        B+ 树:在 B- 树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引; B+ 树总是到叶子结点才命中;
        B* 树:在 B+ 树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从 1/2 提高到 2/3
6、用户怎么持久的和浏览器的交互

7、线程对同一资源的访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值