公司面试题精选-普X

JAVA

int[] kind;

kind = new int[15];

System.out.println(kind[0]);

System.out.println(kind[15]);

Run:

0

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException



JS:

1.  创建对象的两种方法

方法一:直接定义并创建对象实例

var obj = new Object();    //创建对象实例

//添加属性obj.num = 5;   //添加属性

obj.fn = function( cin ){ return cin;}    //添加方法

访问对象的方法:objectName.methodName()

访问对象的属性:objectName.propertyName


方法二:用函数来定义对象然后创建对象实例

function Class(){

    //添加属性

    this.val = 1;

    //添加方法

    this.fn = function(){

        return 'fn';        

    }}

var obj = new Class(); //创建对象实例

访问对象的方法:objectName.methodName()

访问对象的属性:objectName.propertyName


方法三:literals 直接创建对象实例

literals创建对象实例是一种简化方法.

var obj = {};  //创建空对象

var obj = {

    num : '2',   //这是设置对象属性

    fn : function(){

        ....//这是设置对象方法   

    }

}

访问对象的方法:objectName.methodName()

访问对象的属性:objectName.propertyName


2.  JS中变量提升

1 var v='Hello World';

2 (function(){

3 alert(v);

4 var v='I love you';

5 })()

会出现alert出来的是undefined,原因是因为在函数域里定义一个和外部变量一样名称的变量时,

变量的声明会提升至第一句,赋值则不会变。所以上述语句其实是这样执行的

var v='Hello World';

(function(){

var v;   // 变成在这里了

alert(v);

v='I love you';

})() 


3. JS全局变量有什么风险,怎样避免

风险1:全局变量的问题在于,你的JavaScript应用程序和web页面上的所有代码都共享了这些全局变量,

       他们住在同一个全局命名空间,所以当程序的两个不同部分定义同名但不同作用的全局变量的时候,命名冲突在所难免

风险2:JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性,经验法则是始终使用var声明变量

风险3:避免全局变量的原因是可移植性。如果你想你的代码在不同的环境下(主机下)运行,

       使用全局变量如履薄冰,因为你会无意中覆盖你最初环境下不存在的主机对象

解决:

1、js的变量有两种作用域:全局变量和局部变量。没有使用 var 声明的变量和在function之外声明的变量都是全局变量,是window属性之一;

   使用 var声明的变量属于所在函数,不管在函数的哪个位置出现,等价于在函数一开始声明。局部变量比同名全局变量的优先级高,

   所以局部变量会隐藏同名的全局变量。要想访问被隐藏的全局变量就加上 window. 前缀。

2、js没有块作用域,在语句块之后,在函数结束之前,语句块定义的变量都是可以访问的。

   比如:for(var idx =0; idx<2;idx++){} alert(idx); 结果显示为2。

  

4.  JS对象迭代

 javascript 数组对象中的迭代方法 

 * ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数,第一个是进行迭代的函数,第二个是该函数的作用域对象【可选】。 

 * 进行迭代的函数接受三个参数,第一个是数组中要进行迭代的元素的值,第二个是数组候总要进行迭代的元素的位置,第三个是迭代数组本身。 

 * 1. every()   对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true  

 * 2. filter()  对数组中的每一项运行给定的函数,返回该函数返回true的项组成的数组。 

 * 3. forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值 

 * 4. map()     对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组 

 * 5. some()    对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true 

 * 这些迭代方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome




5.防范SQL注入式攻击方式

-----------------------------

1.(简单又有效的方法)PreparedStatement采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

2.使用正则表达式过滤传入的参数

3.字符串过滤

4.jsp中调用该函数检查是否包函非法字符

5.JSP页面判断代码


6.复制表结构


select * into 目标表名 from 源表名

insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名

以上两句都是将 源表 的数据插入到 目标表,但两句又有区别的:

第一句(select into from)要求目标表不存在,因为在插入时会自动创建。 

第二句(insert into select from)要求目标表存在,由于目标表已经存在,所以我们除了插入源表的字段外,还可以插入常量,如例中的:5。


详细

1:复制表结构及数据到新表

select * into 目的数据库名.dbo.目的表名 from 原表名

select * into my0735home.dbo.infoMianTest from infoMian

2:备份表的一部分列(不写*而写出列的列表)

select 列名1,列名2,列名3 into 目的数据库名.dbo.目的表名 from 原表名

select id,title,mtype,stype,author,tel,nr into infoMianTest2 from infomian

3:备份表的一部分行(加WHERE条件)

select * into 目的数据库名.dbo.目的表名 from 原表名 where id<10

select * into infomiantest2 from infomian where id<10

4:备份表的一部分列(不写*而写出列的列表)和一部分行(加WHERE条件)

select 列名1,列名2,列名3 into 目的数据库名.dbo.目的表名 from 原表名 where  id<10

5:只复制表的结构:如:SELECT * INOT t1 FROM titles WHERE 1=2

6:查询结果来源于多个表:如:

SELECT title_id,title,pub_name INTO t3

FROM titles t INNER JOIN publishers p

ON t.pub_id=p.pub_id


7.两张关联表,删除主表中已经在副表中没有的信息

delete from table1  where not exists  

( select * from table2 where table1.field1=table2.field1 ) 


8.主键与外键

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组

(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。


9.复制表结构

select * into 数据库名.dbo.新表名 from 数据库名.dbo.原表名 where 1=0


10结果:

public class parentClass {

public int i = 10;

}

public class subClass extends parentClass{


public int i = 30;

public static void main(String[] args) {

// TODO Auto-generated method stub

parentClass parentC = new subClass();

subClass subC = new subClass();

System.out.println("parentC:"+parentC.i+" subC:"+subC.i);

}

}

Result: parentC:10 subC:30


你可能感兴趣的:(公司面试题精选-普X)