阿里实习面试总结

简介:

这次妥妥的倒在了一面上。还是基础不够扎实。

1. 重载与多态区别

重载(overload)一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 重载的规则: a、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); b、不能通过访问权限、返回类型、抛出的异常进行重载; c、方法的异常类型和数目不会对重载造成影响;

重写/覆盖(override),子类在继承父类时,重写父类中的方法。 重写的规则: a、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. b、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。 c、重写的方法的返回值必须和被重写的方法的返回一致; d、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; e、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。 f、静态方法不能被重写为非静态的方法(会编译出错)。

多态为了避免在父类里大量重载引起代码臃肿且难于维护。通过重写实现。


public class Shape {  
    public static void main(String[] args) {  
        Triangle tri = new Triangle();  
        System.out.println("Triangle is a type of shape? " + tri.isShape());// 继承  
        Shape shape = new Triangle();  
        System.out.println("My shape has " + shape.getSides() + " sides."); // 多态  
        Rectangle Rec = new Rectangle();  
        Shape shape2 = Rec;  
        System.out.println("My shape has " + shape2.getSides(Rec) + " sides."); // 重载  
    }  

    public boolean isShape() {  
        return true;  
    }  

    public int getSides() {  
        return 0;  
    }  

    public int getSides(Triangle tri) { // 重载  
        return 3;  
    }  

    public int getSides(Rectangle rec) { // 重载  
        return 4;  
    }  
}  

class Triangle extends Shape {  
    public int getSides() { // 重写,实现多态  
        return 3;  
    }  
}  

class Rectangle extends Shape {  
    public int getSides() { // 重写,实现多态  
        return 4;  
    }  
}


2. read()执行时操作系统完成的工作

3. 进程有哪些状态

基本状态:运行-就绪-阻塞(也称为等待或睡眠)。实际的系统中经常引入新建态和终止态。有的系统引入了挂起态。 Java线程状态共6个:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

4. url中参数去掉一部分的算法

当时想到了切分字符串和正则替换,但是写的正则有问题。面试结束和面试官交流,他提示扫描一遍就可以。


package monitor;  

import java.util.Arrays;  

class CheckHelper {  
    private char temp[] = new char[64];  
    private String params[];  
    private boolean check[];  
    private int tag = 0;  

    public CheckHelper(String params[]) {  
        this.params = params;  
        check = new boolean[params.length];  
    }  

    public void initCheck() {  
        for (int i = 0; i < check.length; i++)  
            check[i] = true;  
        tag = 0;  
    }  

    public void doCheck(char c) {  
        for (int i = 0; i < params.length; i++) {  
            String param = params[i];  
            temp[tag] = c;  
            if (tag >= param.length() || param.charAt(tag) != c) {  
                check[i] = false;  
            }  
        }  
        tag++;  
    }  

    public String getResult() {  
        for (int i = 0; i < params.length; i++) {  
            String param = params[i];  
            if (check[i] && param.length() == tag) {  
                initCheck();  
                return null;  
            }  
        }  
        String ret = new String(Arrays.copyOf(temp, tag));  
        initCheck();  
        return ret;  
    }  
}  

public class Test {  
    public static String removeParam(String url, String[] params) {  
        CheckHelper ch = new CheckHelper(params);  
        ch.initCheck();  
        StringBuilder sb = new StringBuilder();  
        boolean start = false;  
        boolean rest = false;  
        boolean copy = false;  
        for (int i = 0; i < url.length(); i++) {  
            char c = url.charAt(i);  
            if (!start) {  
                sb.append(c);  
                if (c == '?')  
                    start = true;  
            } else if (c == '=') {  
                rest = true;  
                String ret = ch.getResult();  
                if (ret != null) {  
                    if (sb.charAt(sb.length() - 1) != '?')  
                        sb.append('&');  
                    sb.append(ret);  
                    sb.append('=');  
                    copy = true;  
                } else {  
                    copy = false;  
                }  
            } else if (!rest) {  
                ch.doCheck(c);  
            } else if (c != '&') {  
                if (copy)  
                    sb.append(c);  
            } else {  
                ch.initCheck();  
                rest = false;  
                copy = false;  
            }  
        }  
        return sb.toString();  
    }  

    public static void main(String[] args) throws Exception {  
        String url = "http://s.taobao.com/search?spm=a230r.1.0.100.S98nmj&" +  
                "q=Apple%2F%C6%BB%B9%FB+MacBook+Pro+MD101CH%2FA&v=product&p=" +  
                "detail&pspuid=202666380&cat=1101&from_pos=55_1101.xlcombo_1_2_202666380";  
        String[] params = { "spm", "pspuid", "cat" };  
        System.out.println(removeParam(url, params));  
    }  
}


PS. 2014年的今天已经是阿里巴巴的一员了。觉得应该对自己的Java有信心并提出让Java工程师来面试我。

目录
相关文章
|
1月前
|
存储 缓存 监控
2024年春招小红书前端实习面试题分享
春招已经拉开帷幕啦! 春招的拉开,意味着新一轮的求职大战已经打响,希望每位求职者都能充分准备,以最佳的状态迎接挑战,找到心仪的工作,开启职业生涯的新篇章。祝愿每位求职者都能收获满满,前程似锦!
71 3
|
1月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
1月前
|
存储 算法
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
|
2月前
|
缓存 监控 架构师
阿里面试:Java开发中,应如何避免OOM
在Java开发中,OutOfMemoryError(OOM)错误一直是令开发者头疼的问题,也是Java面试中出现核心频率很高的问题。 那么我们究竟怎么样才能够有效正确的管理内存,日常开发中究竟要注意哪些核心技巧来避免OOM错误。 本文将带大家一起学习10个避免OOM的实用小技巧,让大家在工作中能够有的放矢,避免OOM错误的飞来横祸。
49 1
|
3月前
|
算法 Java 程序员
阿里P8大佬终于把春招面试必备的神级Java面试手册给开源了!
先说说Java Java 作为国人编程开发语言中的 NO.1,已经占比半壁江山,选择入行做 IT 做编程开发的人,基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想。 以前Java 岗位人才的空缺,而需求量又大,所以这种人才供不应求的现状,就是 Java 工程师的薪资待遇相对优厚的原因所在。 但是随着这个从事行业的人数逐渐增多,行业竞争也越来越大,招聘的企业和程序员们都想招聘到自己需要的人才/找到自己理想的岗位,国内大厂尤其是阿里招聘Java岗位居多,导致现在 Java 面试越来越难,内卷早就是大势所趋,万物皆可卷,卷的我们都见怪不怪了。 那么,阿里Java面试难度大吗?
|
3月前
|
NoSQL Java 关系型数据库
阿里技术三面:P7想靠资历打败我,却惨败于这800页面试热题下
阿里巴巴,这个中国互联网行业中能排上前三的企业,面试是非常讲究的。通常都是三面技术面+HR面,可是多少心怀阿里梦的工作者惨败三面之中,连HR面都没见着就败了。那如何通过技术三面呢?我来介绍介绍(这里是指我技术三面的经验)
|
3月前
|
算法 Java 关系型数据库
在家“闭关”,阿里竟发来视频面试,4面顺利拿下offer
关于个人呢,我是一个普通的双非本科生,在校成绩不错,各方面的表现自我感觉也比较突出,今年大四即将毕业,对自己进入大厂工作是很有信心的,我的方向是Java,也知道现在Java的竞争比较激烈,大厂比较难进,但我丝毫不胆怯。当然,我还是很走“狗屎运”的,没想到闭关在家期间,也能收到阿里发来的视频面,还一路顺利拿下了offer。
|
20天前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
38 1
|
2月前
|
存储 关系型数据库 MySQL
2024年Java秋招面试必看的 | MySQL调优面试题
随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。
237 0
2024年Java秋招面试必看的 | MySQL调优面试题
|
2月前
|
存储 算法 Java
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
45 1