公司笔试题答案汇总(三)

三、第三间公司(辰宜)
1.hibernate的get和load有什么区别。
答:使用session.get()方法去得到一个对象,不管我们是否使用这个对象,都会发出sql语句去数据库中查询出来;
使用session.load()方法加载对象时,不会马上执行sql查询,会先得到该对象的代理对象,该代理对象中只有实体对象的id值,只有当我们要使用这个对象除id外的其他属性时,才会发出sql语句查询。

2.Spring的bean在什么时候实例化?
答:第一:如果你使用BeanFactory作为SpringBean的工厂类,则所有bean都是在第一次使用该bean的时候实例化;
第二:如果你使用ApplicationContext作为Spring bean的工厂类,分情况:
1)bean是单例,lazy-init为false,则ApplicationContext启动的时候就实例化该bean并存在一个map的缓存中;如果该bean实现了FactoryBean接口,则ApplicationContext启动的时候先实例化对应的FactoryBean,第一次使用bean的时候通过getObject方法实例化
2)bean是单例,lazy-init是true,实例化是在第一次使用时进行实例化
3)bean是多例时,也是第一次使用时进行实例化

3.AOP使用什么模式实现?
答:jdk的动态代理模式实现的面向切面编程

4.你使用过哪些前端技术?
答:html,css,JS,ajax,jquery,EasyUI,Ztree

5.java中,怎样克隆?
答:java中克隆有两种
1)浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍然指向原有属性所指向的对象的内存地址。
2)深克隆:创建一个新对象,属性中的引用其他对象也会被克隆,不再指向原有对象地址。
要进行克隆,该类要实现Cloneable的接口,重写clone()方法,在这个方法中加上自己的克隆逻辑。
补充:clone()是object的方法

6.javascript中,怎样获取,设置,删除一个属性?
答:原生Js:获取属性.getAttribute(“属性”),设置属性.setAttribute(“属性”,“值”),删除属性.remoteAttribute(“属性”)
jQuery:获取属性.attr(“属性”);设置属性.attr(“属性”,“值”);删除属性.removeAttr(“属性”)

7.javascript中,call,apply,bind的区别?
答:a.都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。
b.call.apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。

8.静态方法,构造方法的执行顺序?
答:初始化顺序(依次是静态变量、静态构造函数、实例变量、实例构造函数)
子类静态变量初始化>子类静态构造函数>父类静态变量初始化 > 父类静态构造函数 > 父类实例变量初始化>父类实例构造函数 > 子类实例变量初始化>本身实例构造函数。

9.多线程的实现方法?
答:a.继承Thread类,重写run方法
b.实现runnable接口,重写run方法,实现runnable接口的实现类的实例对象 作为Thread构造函数的target
c.通过callable,和FutureTask创建线程
public class ThreadDemo03 {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Callable<Object> oneCallable = new Tickets<Object>();
    FutureTask<Object> oneTask = new FutureTask<Object>(oneCallable);
   Thread t = new Thread(oneTask);
    System.out.println(Thread.currentThread().getName());
    t.start();
}

}
class Tickets implements Callable{

//重写call方法
@Override
public Object call() throws Exception {
    // TODO Auto-generated method stub
    System.out.println(Thread.currentThread().getName()+"-->我是通过实现Callable接口通过FutureTask包装器来实现的线程");
    return null;
}   

d.通过线程池创建线程

public class ThreadDemo05{
    private static int POOL_NUM = 10;     //线程池数量
    /**
     * @param args
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        ExecutorService executorService = Executors.newFixedThreadPool(5);  
        for(int i = 0; i<POOL_NUM; i++)  
        {  
            RunnableThread thread = new RunnableThread();

            //Thread.sleep(1000);
            executorService.execute(thread);  
        }
        //关闭线程池
        executorService.shutdown(); 
    }   

}

class RunnableThread implements Runnable  
{     
    @Override
    public void run()  
    {  
        System.out.println("通过线程池方式创建的线程:" + Thread.currentThread().getName() + " ");  
    }  

10.javascript中,什么是闭包?
答:闭包就是能够读取其他函数内部变量的函数。跨作用域访问变量。指可以访问另一个函数作用域变量的函数。

function user () {
 var name = 'xixi'
 return function getName () {
 return name
 }
}
var userName = user()()
console.log(userName) // xixi

11.javascript中,函数怎么样定义?
答:a.function 函数名(参数){}
b.(function(){}).()
c.var fname = function(参数){};

12.spring mvc 的 @RequestMapping 是什么?
答:这个注释是用于映射url到控制器类或一个特定的处理程序方法。多不同的URL请求映射不同的处理方法。

13.AOP能实现什么功能?
答:日志记录,权限控制,事务管理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值