京东android面试题2019,2019京东的面试题(牛客)

1、增量模型

把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件

2、值类型和引用类型

值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址。

3、如何在多线程中避免发生死锁?

允许进程同时访问某些资源。

4、递归法

程序结构更简洁

占用CPU的处理时间更多

要消耗大量的内存空间,程序执行慢,甚至无法执行

递归法比递推法的执行效率低

5、字符串”ABCD”和字符串”DCBA”进行比较,如果让比较的结果为真,应选用关系运算符

<

解释:

按照编码值进行比较。java语法上不允许

6、已知小顶堆:{51,32,73,23,42,62,99,14,24,3943,58,65,80,120},请问62对应节点的左子节点是

65

7、若串S=”UP!UP!JD”,则其子串的数目

一个八个字符串 公式n(n+1)/2 + 1 你可以把子串”bc”抽象为”a|bc|de”,这样一来计算子串数目的问题其实就转化成了计算字符串中放置边界的问题,一个长度为n的字符串中可以放置n个边界,放置第一个边界后可以放置有n-1种选择作为第二条边界,这样得到n(n-1)条子串,又因为两条边界顺序互换子串不变,所以结果需要除以2,最后再加上字符串本身,得到n(n+1)/2 + 1。

所以8*9/2+1=37

8、一颗二叉树的叶子节点有5个,出度为1的结点有3个,该二叉树的结点总个数是?

叶子节点个数 = 5 ,因为叶子节点个数=度为2的结点个数加1,所以

度为2的结点个数=5-1=4,

度为1的结点个数 = 3,

所以总个数 = 5 + 4 + 3 = 12

9、一趟结束后能够确定一个元素的最终位置的排序方法有

简单选择排序、快速排序、冒泡排序、堆排序

10、权值分别为9、3、2、8的结点,构造一棵哈夫曼树,该树的带权路径长度是?

一、对结点排序,为2,3,8,9

二、2和3的父节点为5(2+3的权值)

三、8大于2和3,8和5组成,父节点为13

四、9大于2、3、8,9和13组成,父节点为22

五、计算带权路径长度:结点的带权路径长度为从根结点到该结点之间的路径长度与该结点的权的乘积。

32+33+28+19=40

11、后退N帧协议的发送窗口大小是(),接收窗口的大小是()?

滑动窗口协议有

1、停止等待协议,发送窗口=1,接受窗口=1;

2、退后N帧协议,发送>1,接收=1;

3、选择重传协议,发送>1,接收>1;

12、对于京东商城高流量访问,预防Ddos的方法可以有?

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect)。此时服务器处于SYN_RECV状态。当收到ACK后,服务器转入ESTABLISHED状态。

攻击客户端通过发包器,在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包SYN/ACK,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发SYN/ACK直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

SYN攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。

13、Ext3日志文件系统的特点

1、高可用性:系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。

2、数据的完整性:避免了意外宕机对文件系统的破坏。

3、文件系统的速度:因为ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。

4、数据转换 :“由ext2文件系统转换成ext3文件系统非常容易。

5、多种日志模式

14、数据库的范式

第一范式(1NF)

指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。

第二范式(2NF)

第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。

第二范式(2NF)要求实体的属性完全依赖于主关键字。

所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。

简而言之,第二范式就是非主属性依赖于主关键字。

第三范式(3NF)

在满足第二范式的基础上,切不存在传递函数依赖,那么就是第三范式。

简而言之,第三范式就是属性不依赖于其它非主属性。

15、判断有没有使用索引

索引的最左匹配特性

​ 当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候

b+数是按照从左到右的顺序来建立搜索树的,

比如当(张三,20,F)这样的数据来检索的时候,

b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;

但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点

总之,判断有没有使用索引:

​ (使用到索引)==(条件中出现联合索引最左前缀字段)

16、truncate 、delete删除表数据的区别

同:

truncate table与delete都是删除表数据,保留表结构

truncate table 在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行。

不同:

truncate 比 delete(一行一行的删)速度快,且使用的系统和事务日志资源少。

truncate 操作后的表比Delete操作后的表要快得多。如果有ROLLBACK命令Delete将被撤销,而 truncate 则不会被撤销。

truncate当表被清空后表和表的索引重新设置成初始大小,而delete则不能。

如果删除表结构及其数据,用 drop table 语句。

执行速度,一般来说: drop> truncate > delete。

17、类初始化的编译期常量

1、如果一个 static final 变量是**“编译期常量”**,就像 *public static final String a = “JD”;*那样,那么这个值不需要对 Test2 类进行初始化就可以读取。

2、但是,如果只是将一个变量的域设置为 static 和 final 的,那不足以确保这种行为。例如,对 *public static final String a = new String(“JD”);*的访问将强制对 Test2 类进行初始化,因为它不是一个"编译期常量"。

3、如果一个 static 变量域不是 final,那么在对它进行访问时,总是要求在它被读取之前,要先进行链接 (为这个域分配存储空间) 和初始化 (初始化该存储空间) 就像 public static String a = “JD”;。

18、用ClassLoader加载类,是不会导致类的初始化(也就是说不会执行方法).Class.forName(…)加载类,不但会将类加载,还会执行会执行类的初始化方法.

19、关于线程池

Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,

让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。

​ yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保

证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!

​ 举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车,

有可能是其他人先上车了,也有可能是Yield先上车了。

​ 但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已,

最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。

20、关于Linux的权限

chmod :

a :代表所有人 u :用户 g :组 o :代表其他用户

read = 4 write = 2 execute = 1

21、shell编程中的关系运算符的表示

EQ 就是 EQUAL等于

NE就是 NOT EQUAL不等于

GT 就是 GREATER THAN大于

LT 就是 LESS THAN小于

GE 就是 GREATER THAN OR EQUAL 大于等于

LE 就是 LESS THAN OR EQUAL 小于等于

22、Linux中的执行文件

点斜杠,点空格斜杠,两者都可以执行脚本,但是:

第一种方式是在子进程中运行脚本,第二种方式是在当前进程中执行脚本。

非当前进程是看不到aa变量的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值