2019.04.13 京东笔试总结,菜鸟就要总结提升自己
只记得大概,想起什么就写什么了!!
先说编程吧 一共2 我交了1.36
第一题:最少时间是根节点的最大子树的节点数
第二题:kmp在低复杂度情况下求出所有区间,区间就是比如aa在baacaav,
然后用贪心的思想,对所有区间排序,排序是对区间的结束时间,也就是右边的值排序,小的在前,然后贪心思想是在排好序的区间里,当前能拿的区间里取出结束最早的
1.堆排序
详见
2.linux命令
使用chomd命令改变文件权限。Linux文件基本权限有9个,owner,group,others三种身份对应各自read,write,execute三种权限。文件权限字符:“-rwxrwxrwx”三个一组。数字化r:4 w:2 x:1 增加用户组可读,但不可写,第一组和第三组默认为0,只在第二组中添加r-x即可 chomd +050
可读为啥还要加上可执行啊??
文件默认666,没有x权限,目录默认777,有x权限,题中是目录。
3.bash shell命令
if [ $1 ] 判断参数是否存在
if [ -a $1] 判断文件或目录是否存在,即$1变量上面对应的是testOne
4.shell文本处理之sed
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本/文件
常用选项:
-n∶取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来
-e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑
-f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作
-r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
-i∶直接修改读取的文件内容,而不是由屏幕输出
常用命令:
a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容
i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g
实例:
1.打印
#sed -n ‘1,3p’ /etc/my.cnf
#sed -n ‘/basedir/p’ /etc/my.cnf
#sed -n ‘s/basedir/datadir/p’ /etc/my.cnf
#sed -n ‘/basedir/,/datadir/p’ /etc/my.cnf
2.插入
#sed ‘2a user=mysql’ /etc/my.cnf //在第二行之后插入
3.删除
#sed ‘5,7d’ /etc/my.cnf
4.替换
#sed -n ‘s/[mysqld]/& aaaa/p’ /etc/my.cnf
[mysqld] aaaa
5.java中split()方法
详见
6.java新生代 与老生代
堆大小 = 新生代 + 老年代。默认下,新生代 ( Young ) = 1/3 的堆空间大小,老年代 ( Old ) = 2/3 的堆空间大小;
新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 to,以示区分。默认的,Edem : from : to = 8 : 1 : 1;
JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块 Survivor 区域是空闲着的。
因此,新生代实际可用的内存空间为 9/10 ( 即90% )的新生代空间;
GC 分为两种:老生代中采用标记-清除算法的Full GC ( 或称为 Major GC )和新生代中采用复制算法的Minor GC。新生代是 GC 收集垃圾的频繁区域;
**所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区。加上老年代就这三个区。数据会首先分配到Eden区 当中(当然也有特殊情况,如果是大对象那么会直接放入到老年代(大对象是指需要大量连续内存空间的java对象)。),当Eden没有足够空间的时候就会 触发jvm发起一次Minor GC。如果对象经过一次Minor GC还存活,并且又能被Survivor空间接受,那么将被移动到Survivor空 间当中。并将其年龄设为1,对象在Survivor每熬过一次Minor GC,年龄就加1,当年龄达到一定的程度(默认为15)时,就会被晋升到老年代 中了,当然晋升老年代的年龄是可以设置的。
其实新生代和老年代就是针对于对象做分区存储,更便于回收等等**
7.redis支持的五种数据类型
详见
8.java基本类型
详见
9.解决哈希冲突的方法
详见
10.Spring强制使用CGLIB代理事务
详见
11.开启强制使用cglib代理
详见
12.java中jvm内存
详见
13.朴素模式匹配算法
详见