IT公司面试小总结

最近这一段时间参加了几场面试,面试的都是Java开发工程师,对面试中要注意的问题做一个总结:

        在面试中,首先要进行一个自我介绍,自我介绍不要太长,但是一定要突出自己的亮点,因为面试官会特别关注你的亮点,从而在这个方面提出问题。有突出的亮点,面试官才会在茫茫的面试人群中记住你。其次,表述能力一定要清晰明了,让面试官觉得你不仅有技术,还能够很精炼的表达出来。千万不能和面试官发生争执,一定要注意礼貌问题。

面试官通常会问到的技术问题:

java基础:
        String,StringBuffer,StringBuilder的区别及使用:String每次修改都会new一个新的对象,将新的对象赋值给原来的,原来的对象就会被GC掉,StringBuffer与StringBuilder都是可以直接通过方法进行修改的,不会new新的对象,但是他们两还是有区别的,StringBuffer是线程安全的,StringBuilder是线程非安全的,所以String一般用在频繁的使用但不会改变值的情况下,StringBuffer常用在频发改变的情况下。
        线程的实现:线程的实现主要有两种方法,一种是继承Thread,覆盖其中的run()方法,另一种是实现Runnable接口,实现其中的run()方法。

        GC:是Java中的垃圾回收机制,回收掉内存中已经没用的对象,判断没用的对象主要是:1.采用标记计数的方法,2.采用根搜索算法。

        预处理的实现原理,为什么可以防止sql注入:因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库分析,编译和优化,对应的执行计划也会缓存下来并允许数据库已参数化的形式进行查询

Web:

        session和cookie的区别:Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

        转发和重定向的区别:1、转发在服务器端完成的,重定向是在客户端完成的;2、转发的速度快,重定向速度慢;3、转发的是同一次请求,重定向是两次不同请求;4、转发不会执行转发后的代码,重定向会执行重定向之后的代码;5、转发地址栏没有变化,重定向地址栏有变化;6、转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成。

        servlet的生命周期:1、调用init()方法进行初始化;2、调用service()方法处理客户端的请求;3、调用destroy()方法终止;4、由JVM进行垃圾回收。

数据结构:
        List:ArrayList是采用数组实现,用于频繁的查询使用,消耗的内存相对较小,是非同步的;LinkedList采用链表实现,用于频繁的修改、删除、插入操作,非同步;Vector与ArrayL类似,但是它是同步的。
        Set:HashSet不排序,不同步,集合元素可为空,基于哈希表实现HashCode()方法,放入的对象必须实现HashCode,但是只能放一个null;TreeSet自动排序(升序),基于二叉树实现。
        Map:Hashtable任何非空的对象都可作为key或value,是同步的;HashMap允许key、value为空值,非同步。
数据库:
        函数:create or replace  function  函数名 return  is begin ......end;只能返回单一的值或表,一般是嵌在select语句中执行
        存储过程:create or replace procedure 过程名 is begin ......end,通过execute执行,可返回多个值,实现的功能往往比函数更复杂。
    触发器:特定事件出现的时候,自动执行代码块,类型存储过程,但用户不能直接调用他们,触发器是数据库自动执行,触发器触发时间有两种:after和before。
        索引:适当的添加索引可以提高查询的速度,切记一定是适当的创建,创建sql语句create index  索引名 on table(column 1,column2)
        事务:对数据库进行一次或多次的逻辑单元操作,要么全部执行,要么全部不执行。

        游标:Oracle系统在内存中开辟的一个工作区,在其中存放SELECT语句返回的查询结果,创建sql语句:declare cursor  游标名 is select begin end。

        索引的优缺点:

            优点:

              1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
              2、可以大大加快检索速度,这也是创建索引的最主要的原因。
              3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
              4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
              5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

            缺点:

              1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
              2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
              3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

        索引的缺点是当大量更新和删除,就会频更改索引,带来性能问题,当大量更新时怎么解决这个问题:应该先删除索引,再更新数据,最后再加上索引。这样更新时就是批量操作,如果不这样做,每一次修改记录,就会更新索引

Java EE:
        struts 2拦截器:当请求struts2的action时,struts 2会查找配置文件,并根据其配置实例化相应的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。用户自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口
        hibernate的优缺点:优点:将数据库中的表转为对象,更符合面向对象编程的思想。缺点:编写的是hql语句,还需要将hql语句转换成sql语句,这一段装换增加了耗时,但是hibernate对sql语句进行优化,一定程度上解决了这个问题。

        Spring的两种使用AOP与IOC:AOP面向切面编程,IOC控制反转。

        过滤器和拦截器的区别:

        对于Java EE方面的问题,面试官一般会问到是否有阅读XXX框架的底层代码,这个就根据实际情况回答,如果阅读了,说明自己的收获,以及这个框架的基本实现,这个是很加分的

计算机网络:
        TCP/IP:这是一个协议族,TCP是传输控制协议,是三次握手,面向连接的,一对一,可靠传输、全双工通信。TCP/IP四层架构:网络接口层、网际层、运输层、应用层。
        UDP:用户数据报,两次握手,无连接的,开销较小,尽最大努力交付,无拥塞控制,支持一对一、一对多、多对一、多对多。
        HTTP:超文本传输协议
软件工程:
        项目的开发流程:需求分析、可行性分析——概要设计、数据库设计——详细设计——测试——交付——维护
高级的可能会问:

        设计模式,数据挖掘,人工智能


        其他问题:了解公司吗?对公司有什么看法?希望有什么样的工作环境?……这些问题就靠大家发挥自己的聪明才智了。


由于笔者知识水平有限,写的不对的地方,或者不够充分的地方欢迎大家指正。谢谢。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值