找实习遇到的面试题

一、关于简历:
(一)爱奇艺
1、谈一谈项目,项目中使用的集合类,是否使用线程?
2、是否使用过Linux?
(二)网易有道
1、Hibernate跟MyBatis有什么不同,各有什么优缺点?
答:Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
MyBatis 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 相对Hibernate“O/R”而言,MyBatis 是一种“Sql Mapping”的ORM实现。
在扩展性方面:
Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句与具体使用的数据库无关,移植性很好。MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
总结:Mybatis优势:
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势:
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
2、在做项目的过程中遇到过什么问题,怎么克服的?
3、MySQL跟PostgreSQL有什么不同?
4、项目中MySQL存储的数据量有多大?
5、Hibernate中的session是什么?
答:在Hibernate的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象 的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相 关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。
另外,session也是hibernate的一级缓存。
(三)搜狗
1、了解多线程吗?线程有哪几种创建方式?写一个多线程的例子
2、了解I/O吗,写一个关于I/O的例子
(四)今日头条
1、TCP的三次握手和四次挥手
http://blog.csdn.net/whuslei/article/details/6667471
2、在浏览器中输入一个url后回车,会发生那些事情?
http://magic3.blog.51cto.com/1146917/1354084
3、Java内存模型
http://www.cnblogs.com/nexiyi/p/java_memory_model_and_thread.html
4、垃圾回收机制
5、数据库的索引
6、写一个单例模式
(五)阿里内推
1、垃圾回收机制
2、线程的生命周期,几种状态?
3、什么是死锁?如何避免死锁
4、n个线程同时使用n块资源如何避免死锁?
5、了解concurrent包吗?讲讲ConcurrentMap
6、线程之间如何进行通信
7、静态类、静态方法、静态代码块各自的使用场景
8、SpringMVC跟Struts的区别
9、了解SpringBoot吗?
10、Java中接口可以多继承吗?
答:Java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……
不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
二、关于算法:
(一)爱奇艺
1、直接插入排序,时间复杂度,是否稳定?

//时间复杂度O(N^2),稳定(相同元素的想对位置没改变)
public void insertSort(int arr[]) {
    if (arr == null || arr.length == 0)
        return;
    for (int i = 1; i < arr.length; i++){ //要进行比较的元素位置
        int j = i
        while (j>0 && arr[j] < arr[j - 1]){
            swap(arr[j], arr[j - 1]);
            j--;
        }
    }
}

2、二叉树有哪些遍历方式?怎样实现
有四种遍历方式:前序遍历、中序遍历、后序遍历和层序遍历,分别可以使用递归的方式或者使用辅助栈的方式来进行实现。
3、MySQL的查询语句:查询一张表中年龄最大的员工。
使用子查询

SELECT Name FROM Employee WHERE age = (SELECT MAX(age) FROM Employee);

4、10000行单词,统计出现频次最多的10个单词。
(二)网易有道
1、有红黄蓝三种颜色的球,请将他们按照红、黄、蓝的先后顺序一次摆放,即给一个数组,数组中有三个数字,请对这三个数字进行排序,要求只能遍历数组一次。
思路:假设我们在数组中存放的是0、1、2三个数字来代替三种颜色,使用两个指针分别指向数组的一前一后用来表示0和2的存储位置,接下来就是遍历数组,看该数是否为0或2,如果为零,与前指针指向的位置元素进行交换,如果为2,与后指针指向的位置元素交换,如果为1,则继续向后遍历,代码实现如下:

public void sort (int arr[]){
    if (arr == null || arr.length == 0)
        return;
    int pre = 0;
    int post = arr.length - 1;
    int index = 0;
    while (index < post){
        if (arr[index] == 0){
            swap(arr[index], arr[pre++]);
            index++;//这里index可以自加,因为index在自加的同时已经把2放到后面了,也就是交换过后,index位置上只能是1,这时候直接index++即可
        }
        else if (arr[index] == 2){
            swap(arr[index], arr[post--]);//这时候index就不能自加,因为与2交换后,index位置上可能是0,这时候还需继续index与pre交换
        }
        else{
            index++;
        }   
    }
}

2、求连续子数组的最大和,进阶版:求连续子数组的和的最小绝对值
3、假设学生的成绩分布在0~100,请问如何查找某一分数的学生的人数?
使用key-value映射关系,key值存分数,value存学生人数,用map可以实现。
4、给定一个包含加减乘除运算的字符串,请输出该字符串的运算结果,例如“12+4*20/5-8-9/6”则输出结果是18.5。
(三)搜狗
1、写一个冒泡排序
(四)今日头条
1、反转链表
2、给一个数组,输出从当前位置往后数,比当前元素大的第一个元素,例如,给出数组{2,4,3,2,1,6,7}则输出结果为{4,6,6,6,6,7}
3、给定一个n长的数组,里面的元素为0~n-1乱序排列,判断该数组中是否有重复元素,如果元素类型为无符号整形呢?
(五)阿里内推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值