京东面试

面试地点还在杏石口桥附近

以下是我面试的回顾

public static void main(String[] args) {
        final String a="a";
        final String b="b";
        String c=a+b;
        String d="ab";
        System.out.println(c==d);
        System.out.println(c.equals(d));
    }
代码如上,考察的就是== equals的区别,简单说==是比较的引用,equals比较的是实际对象内容。

如果不加final的话结果是

false,true

上上final的话结果是

true(编译器在运行是进行的优化,因为"ab"不会变,指向它的应用也不会变) ,true


接着一个问题也是面试常问的关于拼写字符串的我直接写结论:

stringbuffer线程安全的

stringbuilder线程不安全的,效率会高一点

而在for循环中使用stringbuilder拼接等效于string拼接


最后让我写个冒泡排序,晕,出门看一下堆排和快排,竟然只考了个简单的。

package paixu;

public class MaoPao {
    public void sort(int[] a){
        for(int i=0;i<a.length;i++){
            for(int j=i;j<a.length;j++){
                if(a[i]>a[j]){
                    int tmp = a[i];
                    a[i] = a[j];
                    a[j] =tmp;
                }
            }
        }
    }
    public static void main(String[] args){
        MaoPao q = new MaoPao();
        int[] a = { 49, 38, 65,12,45,5 };
        q.sort(a);
        for(int s :a){
           System.out.print(s+" ");
        }
    }
}


第二个面试官,很亲和有木有,总是顺带说一句没关系,我就来顺带了解下你掌握的程度

也是先聊聊做的项目,后来扯到了软件工程方面的版本管理控制,持续集成

这个我还挺6,主要是被现在的工作折磨的,也看了几本这方面的书。

技术问题上:

java的异常集成关系如图所示:

其中粉红色的统称为checkedException,是需要捕获的,否则编译器不通过。

绿色部分看自己需求需要不需要捕获,jvm不强制检查。



然后让写程序,线程安全的stack和冒泡(你们是多喜欢冒泡啊),我说冒泡我刚写过了。

自己写了个拓展性非常不好的线程安全stack,回头看下jdk源码,如何实现。

问题:当被问到加了synchronized就一定线程安全吗,比如两个线程交替着调用pop和push会不会有问题。

当时的理解是有问题,以为锁的是方法。回来后搜了下,这样是对的,util.stack也是这样实现的。

当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。

对synchronize理解的还很浅,回头单独看下原理。

链接几个优质的synchronize分析

http://www.majin163.com/tag/synchronized%E5%8E%9F%E7%90%86/

http://blog.csdn.net/chen77716/article/details/6618779

package datastructure;

public class SafedStack {
    private String[] elementArr;
    private int elementCount=0;
    public SafedStack(){
        elementArr = new String[10];
    }
    public synchronized void push(String str){
        elementArr[elementCount++]=str;
    }
    public synchronized String peek(){
        return elementArr[elementCount-1];
    }
    public synchronized String pop(){
        elementArr[elementCount--] = null;
        print();
        return peek();
    }
    public int size(){
        return elementCount;
    }
    public void print(){
        for(String str:this.elementArr){
            System.out.println(str);
        }
    }
    public static void main(String[] args){
        SafedStack stack = new SafedStack();
        System.out.println("size:"+stack.size());
        stack.push("aa");
        stack.push("bb");
        stack.push("cc");
        System.out.println("after push size:"+stack.size());
        System.out.println("peek element:"+stack.peek());
        stack.pop();
        System.out.println("after pop size"+stack.size());
        System.out.println("after pop peek element:"+stack.peek());
    }
}


第三面是部门领导,当时他在开会,让我等一会,我听见他们在讨论主备设计的问题。

等了有半小时,感觉什么随和一个人,我在回答问题的时候是偶尔漂我一眼,多数时间是不看我,貌似我说什么他都是知道我要表达的。

还是先把做的项目描述一下,然后问了几个问题:职业的规划,项目中的收获,在设计的时候如何考虑稳定性,准确性;让我提问题。

面完之后他送我到他们班车,完事。


有点体会:

面试的时候手上有个纸和笔会好很多,稍微画画写写就有有思路。

有的问题没有思路或者说就没有见过的问题,就想办法吧问题沟通清楚,把自己理解的说出来,好的面试官会提醒引导你的,

不要说放弃或者不说话。有的时候这你可以理解为是一种压力测试。

跟面试官正常沟通就行,越放松发挥越好。


面试表现一般,hr给电话,薪水给开的很低,问愿不愿意,没有去(据说京东是13薪)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值