面試/筆試經歷--SQL(括號匹配問題)(jdk底層SuString)---weimob
阿新 • • 發佈:2019-02-09
一張資料表
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;
3.String.substring(beginIndex,endIndex);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; } } }
那麼這就是考你的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);
以上.......校招的漫長之路,就這樣吧。