标签: 笔试

JAVA笔试题汇总

1、进程和线程的区别
2、为什么非主键索引会降低更新速度,提高查询速度? 
 
 
 
===========================Answer=============================
1、进程是程序的一次执行,线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别:    进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。 一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。 
线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。 线程占用的资源要少于进程所占用的资源。进程和线程都可以有优先级。 在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程。
2、非主键索引需要在数据表本身的存储空间外额外开销存储空间,所以在更新的时候可能不仅要更新数据表本身,还要更新非主键索引,更新内容更多了,所以导致速度降低。反过来,如果数据表中的数据按照主键索引的顺序存储,更新的时候就没有额外的开销。 
非主键索引对提高查询速度来讲,主要的方面是:检索的条件(where…)如果命中对应的非主键索引的话,就不需要对数据表做全表扫描,效率肯定是大大提高。 

Linux Shell笔试题汇总

 

1、要求用shell分析Apache日志access_log,要求列出当天访问次数最多的IP,下面是典型的访问信息的log。用shell列出访问最多的20个ip:
 
180.168.41.175 – - [23/Aug/2011:14:47:37 -0400] "GET / HTTP/1.0" 200 654
216.35.116.91 – - [23/Aug/2011:14:47:37 -0400] "GET / HTTP/1.0" 200 654
124.90.136.42 – - [23/Aug/2011:14:47:37 -0400] “GET / HTTP/1.1″ 200 44
 
=========================Answer=========================
1、awk -F  '{print $1}' access_log  |uniq -c | sort -rn | head -20
     或:cut -d- -f 1 access_log |uniq -c | sort -rn | head -20
原理:
       cut
       -d, –delimiter=DELIM
              use DELIM instead of TAB for field delimiter
              表示用-分割,然后-f 1 
       -f, –fields=LIST
              select only these fields;  also print any line that contains  no
              delimiter character, unless the -s option is specified
           表示打印第一部分,就是ip
 uniq 是将重复行去掉, -c表示前面前面加上数目,
       sort -rn 就是按照数字从大到小排序,
       head -20取前面20行
       
         最后打印的结果大概是这样:
                   217 192.114.71.13
                   116 124.90.132.65
                   108 192.114.71.13