牛客网题目知识点总结

1.

int  i, sum=0;
for(i=0;i<10;++i,sum+=i); i 的最终结果是?
答:10
如果问最终sum的值是多少,则选: D 
i = 10;
sum = 55; sum这里的执行范围是1-10,而不是0-9,因为sum+=i,是在++i后面执行的。
 
2.给出这段代码的执行结果?
class Two{
    Byte x;
}
class PassO{
    public static void main(String[] args){
        PassO p=new PassO();
        p.start();
    }
    void start(){
        Two t=new Two();
        System.out.print(t.x+””);
        Two t2=fix(t);
        System.out.print(t.x+” ” +t2.x);
    }
    Two fix(Two tt){
        tt.x=42;
        return tt;
    }
}

答:null 42 42

null null 42
null 42 42
0 0 42
0 42 42
An exception is thrown at runtime
Compilation
此处为Byte是byte的包装类型,初始化为null而不是0


3.两个引用变量指向一个对象问题:因为修改的是堆上的数据,所以改的对象是同一个对象
class Two{
    Byte x;
}
class PassO{
    public static void main(String[] args){
        PassO p=new PassO();
        p.start();
    }
    void start(){
        Two t=new Two();
        System.out.print(t.x+””);
        Two t2=fix(t);
        System.out.print(t.x+” ” +t2.x);
    }
    Two fix(Two tt){
        tt.x=42;
        return tt;
    }
}

4.
表toutiao_tb  
title   data       auther  type
abc     2016.2.23   bob     1
bcv     2016.3.3    http    1
cvt     2016.3.3    http    1
bcvvcm  2016.3.5    js      2
nmhh    2016.2.3    html    2
hhj     2016.3.3    java    3
rrr     2016.3.2    cc      1

查询title中包含cv且type是1的记录

正确答案: B   你的答案: D (错误)

select * from where title = 'cv' and type='1'
select * from where title = '%cv%' and type='1'
select * from where title = '*cv' and type='1'
select * from where title ='*cv*' and type='1
SQL提供了四种匹配模式:

1. % 表示任意0个或多个字符。如下语句:Select * FROM user Where name LIKE '%三%'; 将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来。%三:表示左匹配。三%:表示右匹配。

%三%:表示模糊查询。

2. _ 表示任意单个字符。语句: Select * FROM user Where name LIKE '_三_';只找出“唐三藏”。这样name为三个字且中间一个字是“三”的; Select * FROM user Where name LIKE '三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:Select * FROM user Where name LIKE '[张李王]三'; 将找出“张三”、“李三”、“王三”(而不是“张李王三”); 如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e“。Select * FROM user Where name LIKE '老[1-9]';将找出“老1”、“老2”、……、“老9”;如要找“-”字符请将其放在首位:'张三[-1-9]';

4. [^ ] 表示不在括号所列之内的单个字符。语句:Select * FROM user Where name LIKE '[^张李王]三';将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;Select * FROM user Where name LIKE '老[^1-4]'; 将排除“老1”到“老4”寻找“老5”、“老6”、……、“老9”。

5.* 表示查找的是所有信息,例如select * from tbl_user

最后是重点!由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”、“';”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数: function sqlencode(str) str=replace(str,"';","';';") str=replace(str,"[","[[]") ';此句一定要在最先 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end function 在查询前将待查字符串先经该函数处理即可,并且在网页上连接数据库用到这类的查询语句时侯要注意:如Select * FROM user Where name LIKE '老[^1-4]';上面《'》老[^1-4]《'》是要有单引号的,别忘了,我经常忘!

5.
下列有关InnoDB和MylSAM说法正确的是()

正确答案: A B C   你的答案: 空 (错误)

InnoDB不支持FULLTEXT类型的索引
InnoDB执行DELETE FROM table 命令时,不会重新建表
MylSAM的索引和数据是分开保存的
MylSAM支持主外键,索引及事务的存储
  1. 每个MyISAM数据表,皆由存储在硬盘上的3个文件所组成,每个文件都以数据表名称为文件主名,并搭配不同扩展名区分文件类型:

    1. .frm--存储数据表定义,此文件非MyISAM引擎的一部分。
    2. .MYD--存放真正的数据。
    3. .MYI--存储索引信息。
  2. InnoDB可借由事务记录档(Transaction Log)来恢复程序崩溃(crash),或非预期结束所造成的数据错误;而MyISAM遇到错误,必须完整扫描后才能重建索引,或修正未写入硬盘的错误。InnoDB的修复时间,大略都是固定的,但MyISAM的修复时间,则与数据量的多寡成正比。相对而言,随着数据量的增加,InnoDB会有较佳的稳定性。


MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: 

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: 

· MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。 


原文地址:https://www.cnblogs.com/panxuejun/p/5940075.html