1. 程式人生 > >面試/筆試經歷--SQL(括號匹配問題)(jdk底層SuString)---weimob

面試/筆試經歷--SQL(括號匹配問題)(jdk底層SuString)---weimob

一張資料表


1.查詢所有成績大於80分的學生的名字

select DISTINCT a.name from grade a 

where a.name not in (

select DISTINCT s.name from grade s 

where s.score < 80

)


加上DISTINCT(截然不同的) 意義為去掉重複項   在裡面查詢的表中 如果查到的是兩個小紅 所以裡面的也要用到DISTINCT

2.查詢平均成績大於80分的學生姓名

select a.name,a.avg from (

select name,AVG(score) as avg from grade group by name

) a

where a.avg >80


注意:在AVG函式之後,要加上as avg 取上一個名字來代稱 否則會報錯

其他的類似於 最大值最小值 取不同的函式即可 MIN()  MAX() 等等

一個經常見到的程式設計題

(從這個時候我才知道了java也是有stack棧的,枉費我學習java近乎兩年,學習不精,實在該檢討)


那麼接下來的問題,就與棧有關了 

很常見的程式設計題 關於括號匹配 

import java.util.Stack;
public class StackProblem
{
    public static void main(String[] args)
    {
        String str = "(())、()";
        boolean flag= new StackProblem().check(str);
        System.out.println("這個字串為:"+flag);
    }
    
    
    public boolean check(String str){
        int length = str.length();
        Stack<Character> stack = new Stack<Character>();
        for(int i=0;i<length;i++){
            if(str.charAt(i)==')'){
                stack.pop();
            }else if(str.charAt(i)=='('){
                stack.push(str.charAt(i));
            }else if(str.charAt(i)=='、'){
                //則遇到的就是、了 此時如果棧裡有元素 那麼一定不匹配 沒有元素就可以繼續了
               if(!stack.empty()){
                   //非空 直接返回false
                   return false;
               }
            }
        }
        if(stack.empty()){
            return true;
        }else{
            return false;
        }
        
    }
}
3.String.substring(beginIndex,endIndex);

那麼這就是考你的JDK底層到底看了多少東西了呢,實話是如果真沒看過,那是真不會。最常見的也說不上來,先把遇到的貼上去把。

  /**
     * Returns a string that is a substring of this string. The
     * substring begins at the specified {@code beginIndex} and
     * extends to the character at index {@code endIndex - 1}.
     * Thus the length of the substring is {@code endIndex-beginIndex}.
     * <p>
     * Examples:
     * <blockquote><pre>
     * "hamburger".substring(4, 8) returns "urge"
     * "smiles".substring(1, 5) returns "mile"
     * </pre></blockquote>
     *
     * @param      beginIndex   the beginning index, inclusive.
     * @param      endIndex     the ending index, exclusive.
     * @return     the specified substring.
     * @exception  IndexOutOfBoundsException  if the
     *             {@code beginIndex} is negative, or
     *             {@code endIndex} is larger than the length of
     *             this {@code String} object, or
     *             {@code beginIndex} is larger than
     *             {@code endIndex}.
     */
    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);
    }

但是整個提煉下來,我絕得面試 的人其實看的主要還是就一行程式碼
return ((beginIndex == 0) && (endIndex == value.length)) ? this
                 : new String(value, beginIndex, subLen);


自己嘗試一下 return ((beginIndex==0) && (endIndex==value.length) ) ?  this 

                                     : new String(value,beginIndex,sublen);

以上.......校招的漫長之路,就這樣吧。