Java面试之路(初级java必读)

首先自我介绍???
1.简单介绍SQL注入,如何防止(java-mysql)?
答:利用现有应用程序,利用(恶意)的sql命令注入到后台数据库执行一些恶意的操作—SQL注入
防止:
严格限制WEB应用的数据库操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害 。
检查输入的数据是否具有所期望的数据格式,严格限制变量的类型 。
对进入数据库的特殊字符(’”\尖括号&*;等)进行转义处理,或编码转换。
2.常用的设计模式,简单介绍其中一个?
答:单例模式、工厂模式、代理模式、装饰着模式等等;
jdk动态代理模式:
其实Spring AOP底层运用的就是jdk动态代理;
1)继承了Proxy类,实现了代理的接口,由于java不能多继承,这里已经继承了Proxy类了,不能再继承其他的类,
所以JDK的动态代理不支持对实现类的代理,只支持接口的代理。
2)提供了一个使用InvocationHandler作为参数的构造方法。
3)生成静态代码块来初始化接口中方法的Method对象,以及Object类的equals、hashCode、toString方法。
4)重写了Object类的equals、hashCode、toString,它们都只是简单的调用了InvocationHandler的invoke方法,即
可以对其进行特殊的操作,也就是说JDK的动态代理还可以代理上述三个方法。
5)代理类实现代理接口的sayHello方法中,只是简单的调用了InvocationHandler的invoke方法,我们可以在invoke
方法中进行一些特殊操作,甚至不调用实现的方法,直接返回
3.线程实现、线程并发?
答:线程实现由四种方式:
第一种继承Thread类;第二种实现Runable接口;第三种实现Callable接口;第四种由线程池创建,线程池有newSingleThreadPool、newCacheThreadPool、newfixeThreadPool;
线程并发控制:
wait,notify,notifyAll; synchronized修饰; lock锁;
4.介绍你所知道的集合类?
答:list(Arraylist、Linkedlist)、set(Hashset、HashTable)、Map、Vector;
list和set有什么区别?
list底层基于数组,所以list是有序的,里面的元素可以重复;
set底层基于HashMap,无序,里面的元素不可以重复;
5.介绍springmvc的工作原理?
答:1.客户端发请求到前端控制器DispatcherServlet;
2.前端控制器对配置文件url进行拦截
3.进入Servlet的service层
1)通过url到HandlerMapping映射处理器去寻找指定的Controller并返回给前端控制器
2)前端控制器调用HandlerAdater适配器调用Controller的方法并返回Modelandview
3)前端控制器将Modelandview的信息传给ViewReslover视图解析器进行渲染
4.将渲染的页面返回给用户。
6.介绍项目?
比如项目每天处理的数据量是多少,有没有遇到过高并发,如何处理,redis搭建过集群吗?mysql、orcale搭建过集群吗?等

你可能感兴趣的:(Java面试之路(初级java必读))