Java笔试题解析(二)——2015届唯品会校招

曾经总是看别人写的笔经面经。今天自己最终能够写自己亲身经历的一篇了

T-T。

前阵子去了唯品会的秋招宣讲会,华工场(如今才知道原来找家互联网公司工作的人好多)。副总裁介绍了VIP的商业模式是逛街式的购物,与京东和淘宝不同。

宣讲会之后还没有笔试。网上找了一些曾经的题目,当练练手。

2014校招的。

1.下列不可作为java语言修饰符的是(D)

A. a1 B. $1

C. _1 D. 11

这题目有问题,修饰符是public这些,不能作为变量名才对。

2.整形数据类型中。须要内存空间最少的是(D)

A. short B. long

C. int D. byte

byte为8bit。long和double 64bit,int和float 32bit。char和short 16bit。

一个字节8个bit。

3.在java中。一个类可同一时候定义为很多同名的方法。这些方法的形式參数个数、类型或者顺序各不同样。传回的值也可能不同样。这样的面向对象的特性称为(C)

A. 隐藏 B. 覆盖

C. 重载 D. java不支持此特性

重载定义就如题目所讲。

覆盖就是重写,是子类重写父类方法,參数名和方法名要同样,返回类型和抛出异常比父类小(这里的小不是大小,是范围),訪问修饰符訪问权限大于等于父类。

当然这里有例外:

就是曾经在Java编程思想多态中提到的:

public class TV{
    private void show(){
        System.out.println("TV");
    }
    public static void main(String[] args) {
        TV tv = new LeTV();
        tv.show();
    }
}
class LeTV extends TV{
    public void show(){
        System.out.println("LeTV");
    }
} 

尽管看起来像是“覆盖”,可是没有。private方法自己主动觉得是final方法。对导出类屏蔽,LeTV的show事实上是新的方法,main方法打印的也是TV。由于这不是覆盖。

假设private换成protected是能够的(訪问修饰符訪问权限大于等于父类)。

隐藏的话:

    public class TV{
        public int price = 10;
        public int getprice(){
            return price;
        }
        public static String getString(){
            return "tv";
        }
    }
    class LeTV extends TV{
        public int price = 20;
        public int getprice(){
            return price;
        }
        public int getsuperprice(){
            return super.price;
        }  

        public static String getString(){
            return "letv";
        }  

        public static void main(String[] args) {
            TV tv = new LeTV();
            System.out.println(tv.price+" getprice:"+tv.getprice()+tv.getString());
            LeTV letv = new LeTV();
            System.out.println(letv.price+" getprice:"+letv.getprice()+" getsuperprice:"+letv.getsuperprice()
                    +letv.getString());
        }
    }  

本来会打印的10和LeTV都被隐藏了。事实上域的訪问是在编译期间解析,不是后期绑定,而后期绑定是执行期间,所以被隐藏了。

普通的方法才会覆盖,后面符合多态的特性,而静态方法仅仅和类有关。和详细的对象无关,所以LeTV被隐藏了。

简答:

1.详述堆和栈,进程和线程的含义?

栈的话先进后出,好比先一个箱子,先放进去的东西压在以下,拿出来的时候先把后面放进去的东西拿开。

堆是先进先出。如购买基金,首先赎回的基金是自己最先买入的。

至于进程和线程,最能先说出的就是一个进程包括一个或多个线程。

事实上一个程序至少有一个进程。一个线程仅仅属于一个进程,整体看的话进程能够看成是程序的一次运行,线程是程序片段的一次运行。

差别:进程间相互独立,同一进程下的线程共享所有资源。

进程有自己独立的内存空间。线程共享所属进程的内存空间。

真的要像阮一峰那样类比也能够。CPU是工厂有非常多车间,单核心的CPU在一个时间内仅仅执行一个车间(进程),车间有多个工人工作(线程)。

2.有一个动态数据集(数据实时变化)。如今须要对该数据集用到多种视图进行展示。比方直方图,曲线图和饼图等,在这种应用场景下,使用哪几种设计模式比較合适?

这个不太会。

第三部分:

1.对一对扑克牌进行排序,时间复杂度尽可能小,请使用自然语言描写叙述算法核心思想。并指出使用算法的时间复杂度。使用java语言描写叙述详细算法的实现。

(桶排序),这是师姐的方法。

2.在Linux操作系统下,有一个文本(文件名称为user).格式例如以下:

Leo:456:7890:11

Vincent:333:43434:2

Rack:4343:4343:22

Leo:444:33:4343

Rack:1:1:1

Tiger:1:32:4

要求:

1. 提取第二列的值,并对其进行排序.

2. 计算第二列的总和。

3. 找出第二,三和四之和的最大值。

4. 假如有一百万个这种文本,每一个大小为500M,用最快的方式统计哪个用户(第一列)的后面三列之和最大。

注:能够用java或者shel脚本实现以上功能。

以上试题来自:http://blog.csdn.net/aacm1992/article/details/14907315#comments

2015校招

后面网申后收到笔试通知

1.笔试

整体不是太难,考察方向全面。

(1) 5道选择题,比較基础。后面都是问答题。

(2) 数据库一题,二选一,一个是用group by和count查询出选修课程在2~3门之间的学生,还有一个是给出两个数据库表,让你对数据库模型进行优化。

(3) 操作系统一题。二选一,一个时间片的问题,这个不太会,挑了第二道题做。第二道题问的是进程间共享数据的方式。事实上就是进程间传播和交换信息。

1)共享内存,内存由一进程创建。其它进程共享。

2)信号量。计数器。控制资源訪问。

3)管道。在具有亲缘关系的进程中使用。通常指父子进程关系。

(4) 数据结构与算法,二选一,第一题忘了,第二题是给出一个时间段的股票价格趋势。问你何时买入何时卖出获取最大利润。

先说自己的土方法,鉴于算法是渣渣。然后写了两个for循环嵌套。就是每一个价格都去减。结果当然是对的,可是复杂度当然就弱爆了。

后面就去问人了。

事实上有这样一个窍门。先找出所有价格中的最低的价格,然后往后找到最高价格,相减。

再找出所有价格中的最高价格。往前找最低价格。相减。

两个中最大值便是最大利润,这是我后面问人的,绘图画了之后感觉是对的

原来,窍门是错的,5 10 2 8 1 3。

窍门的话得出结果是5。事实上8-2才是最大值。

后面去问了671coder。acmer就是不一样,给出了动态规划的方案,代码看到之后大吃一惊。

int max = -1;
int ans  = -1;
for (int i=len-1; i>=0; i--)
      if(num[i]>max)
             max=num[i];
       if(max- num[i] > ans)
             ans = max- num[i];
return ans;

每次将最大值存进去,遇到更大的利润再替换。

复杂度才O(N)。

(5) 计算机网络。二选一,一道是子网掩码。一道是TCP与UDP差别:

TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)协议属于传输层协议。

TCP可靠。相对负载比UDP大。

(6) 最后一道,附加题。

就是传说中的爱因斯坦出的推理题目。5个国家,5间房子。5种宠物啤酒那道题。之前推过。

不停如果推理依据条件推翻。得出答案。

2.一面

后面收到通知,非常是兴奋,第一次技术面试(好吧。别人已经拿到batoffer的时候,我才第一次技术面试)。

面试是在一间教室里面。教室有6,7个面试同一时候进行。我和面试官坐同一排椅子。隔了一个座位,我的面试官人非常nice。常常笑,还是头后仰哈哈大笑那种。总体和日常聊天一样。

可是因为第一次技术面试。刚開始有点紧张。

一面整体还是看你对基础的东西的了解,投的是Java方向的。

问我做的项目。

回答用了框架写的。然后各自大体有什么作用。框架搭了多久。

servlet了解吗?

servlet生命周期,再由doGet,dotPost方法联系到get和post的差别,之前简单的想到url地址后面跟不跟数据可不可靠(回去查了之后发现另一个大差别。get数据传输小,限制在2kb左右。可是速度快一些,所以数据小不在乎安全性,能够直接用get。post数据传输相对大,传文件用post)。

再由servlet跳到JSP。

jsp跳转的方式。糟了。直接更面试官说忘了。好久没写了,面试官说没关系。忘记的同学请脑补。

然后再拿笔试题进行询问。

问的还是思路多一些。

说完问了我打什么游戏——dota,然后又是扯了一大堆东西。

又谈回技术。

讲面向对象的三大特性。封装体如今哪,多态是什么。

这个放假看过编程思想,blabla讲出来,还比划样例。

了解设计模式吗?

单例。讲了使用方法,应用什么的。

最后面试官的总结,整体不错,可是人太多了,这句话的意思我也听懂了。

后面说了声谢谢离开了教室。

前前后后花了半个钟多一些,作为第一次面试。个人感觉还能够吧。面完继续參加其它的两场笔试。

希望自己早日找到一份好的实习,能够去公司见见很多其它的牛人。学到很多其它。也同其它的同学一起努力,不停地去尝试吧。

不试试怎么会知道呢?——Go桌面人力资源副总监,宣讲会说的一句话。

时间: 2024-12-26 00:55:30

Java笔试题解析(二)——2015届唯品会校招的相关文章

java笔试题解析

1.数组乱序 天天搞排序,今天遇到一道乱序的问题居然无从下手,知道random,然后想了很复杂的if条件判断. 其实,只要在数组里面依次拿出一个数,然后产生数组长度范围内的一个数作为下标,然后互换即可! public class RandomNumber { public static void main(String[] args) { int change = 6; int[] sequence = new int[change]; for (int i = 0; i < change; i

Java笔试题解析(二)——2015年唯品会校招

以前总是看别人写的笔经面经,今天自己终于可以写自己亲身经历的一篇了 T-T. 前阵子去了唯品会的秋招宣讲会,华工场(现在才知道原来找家互联网公司工作的人好多),副总裁介绍了VIP的商业模式是逛街式的购物,与京东和淘宝不同.宣讲会之后还没有笔试.网上找了一些以前的题目,当练练手. 2014校招的. 1.下列不可作为java语言修饰符的是(D) A. a1 B. $1 C. _1 D. 11 这题目有问题,修饰符是public这些,不能作为变量名才对. 2.整形数据类型中,需要内存空间最少的是(D)

Java中有关构造函数的一道笔试题解析

Java中有关构造函数的一道笔试题解析 1.具体题目如下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 2.解析说明 (1)class中的构造函数是可以省略的 /** * @Title:User.java * @Package:com.you.user.model * @Descrip

精选30道Java笔试题解答

个人觉得整理的超级好的Java笔试题,原文请见 http://blog.csdn.net/lanxuezaipiao/article/details/16753743 1. 下面哪些是Thread类的方法() A start()       B run()       C exit()       D getPriority() 答案:ABD 解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方

Java笔试题1

1. 下面的代码运行后,将输出什么结果? String s1 = new String("Test"); String s2 = new String("Test"); if (s1 == s2) System.out.println("Same"); if (s1.equals(s2)) System.out.println("Equals"); A. Same     Equals  B.Same   C. Equals

java笔试题(1)

char型变量中能不能存贮一个中文汉字? char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦.不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字.补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节. "=="和equals方法有什么区别? (1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时

java笔试题(3)

short a = 1; a = a + 1; 有错吗? short a = 1; a += 1; 有错吗? 对于short a = 1; a = a + 1;由于a + 1 运算时会自动提升表达式的类型,所以结果是int型,再复制short类型a时,编译器将报告需要强制装换类型的错误. 对于short a = 1; a += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译. 静态变量和实例变量的区别? 在语法定义上的区别:静态变量前要加stati

java笔试题(4)

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系! abstract的method 不可以是native的,native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用.例如,FileOutputSteam类要硬件打交道,底层的

java笔试题(2)

简述构造器的运行机制 首先要注意的是的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因. 构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象.同步.静态等等访问限制以外的形式. 因为构造器不是函数,所以它是没有返回值的,也不允许有返回值.但是这里要说明一下,构造器中允许存在