读面试题有感

来源:互联网 发布:女大十八变知乎 编辑:程序博客网 时间:2024/06/06 02:27

本区域专门总结遇到的各种面试题,本来都很熟悉了,谁知道几天过后我啥都忘了,只能记录下来

京北方:这个是外包,外包的考题都很基础,但是代码量少的人肯定是过不了关的。它考了一个String的大部分方法,我居然一个也做不出来。

1.

public String toUpperCase() {    return toUpperCase(Locale.getDefault());}
2.
public int length() {    return value.length;}
3.截取子串-------
public String substring(int beginIndex) {    if (beginIndex < 0) {        throw new StringIndexOutOfBoundsException(beginIndex);    }    int subLen = value.length - beginIndex;    if (subLen < 0) {        throw new StringIndexOutOfBoundsException(subLen);    }    return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);}
------------------.
public String substring(int beginIndex, int endIndex) {    if (beginIndex < 0) {        throw new StringIndexOutOfBoundsException(beginIndex);    }    if (endIndex > value.length) {        throw new StringIndexOutOfBoundsException(endIndex);    }    int subLen = endIndex - beginIndex;    if (subLen < 0) {        throw new StringIndexOutOfBoundsException(subLen);    }    return ((beginIndex == 0) && (endIndex == value.length)) ? this            : new String(value, beginIndex, subLen);}
4.替换字符串
public String replaceAll(String regex, String replacement) {    return Pattern.compile(regex).matcher(this).replaceAll(replacement);}
5.转成小写
public String toLowerCase(Locale locale) {    if (locale == null) {        throw new NullPointerException();    }    int firstUpper;    final int len = value.length;    /* Now check if there are any characters that need to be changed. */    scan: {        for (firstUpper = 0 ; firstUpper < len; ) {            char c = value[firstUpper];            if ((c >= Character.MIN_HIGH_SURROGATE)                    && (c <= Character.MAX_HIGH_SURROGATE)) {                int supplChar = codePointAt(firstUpper);                if (supplChar != Character.toLowerCase(supplChar)) {                    break scan;                }                firstUpper += Character.charCount(supplChar);            } else {                if (c != Character.toLowerCase(c)) {                    break scan;                }                firstUpper++;            }        }        return this;    }    char[] result = new char[len];    int resultOffset = 0;  /* result may grow, so i+resultOffset                            * is the write location in result */    /* Just copy the first few lowerCase characters. */    System.arraycopy(value, 0, result, 0, firstUpper);    String lang = locale.getLanguage();    boolean localeDependent =            (lang == "tr" || lang == "az" || lang == "lt");    char[] lowerCharArray;    int lowerChar;    int srcChar;    int srcCount;    for (int i = firstUpper; i < len; i += srcCount) {        srcChar = (int)value[i];        if ((char)srcChar >= Character.MIN_HIGH_SURROGATE                && (char)srcChar <= Character.MAX_HIGH_SURROGATE) {            srcChar = codePointAt(i);            srcCount = Character.charCount(srcChar);        } else {            srcCount = 1;        }        if (localeDependent ||            srcChar == '\u03A3' || // GREEK CAPITAL LETTER SIGMA            srcChar == '\u0130') { // LATIN CAPITAL LETTER I WITH DOT ABOVE            lowerChar = ConditionalSpecialCasing.toLowerCaseEx(this, i, locale);        } else {            lowerChar = Character.toLowerCase(srcChar);        }        if ((lowerChar == Character.ERROR)                || (lowerChar >= Character.MIN_SUPPLEMENTARY_CODE_POINT)) {            if (lowerChar == Character.ERROR) {                lowerCharArray =                        ConditionalSpecialCasing.toLowerCaseCharArray(this, i, locale);            } else if (srcCount == 2) {                resultOffset += Character.toChars(lowerChar, result, i + resultOffset) - srcCount;                continue;            } else {                lowerCharArray = Character.toChars(lowerChar);            }            /* Grow result if needed */            int mapLen = lowerCharArray.length;            if (mapLen > srcCount) {                char[] result2 = new char[result.length + mapLen - srcCount];                System.arraycopy(result, 0, result2, 0, i + resultOffset);                result = result2;            }            for (int x = 0; x < mapLen; ++x) {                result[i + resultOffset + x] = lowerCharArray[x];            }            resultOffset += (mapLen - srcCount);        } else {            result[i + resultOffset] = (char)lowerChar;        }    }    return new String(result, 0, len + resultOffset);}

0 0
原创粉丝点击