首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

2011.04.22——— 礼拜三的面试题

2012-12-21 
2011.04.22——— 星期三的面试题今天面试去了 把几道面试题 记一下吧1、实现把一个整数字符串转换为整数看一

2011.04.22——— 星期三的面试题


今天面试去了 把几道面试题 记一下吧

1、实现把一个整数字符串转换为整数
看一下Integer.parsentInt()

/**     * Parses the string argument as a signed integer in the radix      * specified by the second argument. The characters in the string      * must all be digits of the specified radix (as determined by      * whether {@link java.lang.Character#digit(char, int)} returns a      * nonnegative value), except that the first character may be an      * ASCII minus sign <code>'-'</code> (<code>'&#92;u002D'</code>) to      * indicate a negative value. The resulting integer value is returned.      * <p>     * An exception of type <code>NumberFormatException</code> is     * thrown if any of the following situations occurs:     * <ul>     * <li>The first argument is <code>null</code> or is a string of     * length zero.     * <li>The radix is either smaller than      * {@link java.lang.Character#MIN_RADIX} or     * larger than {@link java.lang.Character#MAX_RADIX}.      * <li>Any character of the string is not a digit of the specified     * radix, except that the first character may be a minus sign     * <code>'-'</code> (<code>'&#92;u002D'</code>) provided that the     * string is longer than length 1.     * <li>The value represented by the string is not a value of type     * <code>int</code>.      * </ul><p>     * Examples:     * <blockquote><pre>     * parseInt("0", 10) returns 0     * parseInt("473", 10) returns 473     * parseInt("-0", 10) returns 0     * parseInt("-FF", 16) returns -255     * parseInt("1100110", 2) returns 102     * parseInt("2147483647", 10) returns 2147483647     * parseInt("-2147483648", 10) returns -2147483648     * parseInt("2147483648", 10) throws a NumberFormatException     * parseInt("99", 8) throws a NumberFormatException     * parseInt("Kona", 10) throws a NumberFormatException     * parseInt("Kona", 27) returns 411787     * </pre></blockquote>     *     * @param      s   the <code>String</code> containing the integer      * representation to be parsed     * @param      radix   the radix to be used while parsing <code>s</code>.     * @return     the integer represented by the string argument in the     *             specified radix.     * @exception  NumberFormatException if the <code>String</code>     *    does not contain a parsable <code>int</code>.     */    public static int parseInt(String s, int radix)throws NumberFormatException    {        if (s == null) {            throw new NumberFormatException("null");        }if (radix < Character.MIN_RADIX) {    throw new NumberFormatException("radix " + radix +    " less than Character.MIN_RADIX");}if (radix > Character.MAX_RADIX) {    throw new NumberFormatException("radix " + radix +    " greater than Character.MAX_RADIX");}int result = 0;boolean negative = false;int i = 0, max = s.length();int limit;int multmin;int digit;if (max > 0) {    if (s.charAt(0) == '-') {negative = true;limit = Integer.MIN_VALUE;i++;    } else {limit = -Integer.MAX_VALUE;    }    multmin = limit / radix;    if (i < max) {digit = Character.digit(s.charAt(i++),radix);if (digit < 0) {    throw NumberFormatException.forInputString(s);} else {    result = -digit;}    }    while (i < max) {// Accumulating negatively avoids surprises near MAX_VALUEdigit = Character.digit(s.charAt(i++),radix);if (digit < 0) {    throw NumberFormatException.forInputString(s);}if (result < multmin) {    throw NumberFormatException.forInputString(s);}result *= radix;if (result < limit + digit) {    throw NumberFormatException.forInputString(s);}result -= digit;    }} else {    throw NumberFormatException.forInputString(s);}if (negative) {    if (i > 1) {return result;    } else {/* Only got "-" */throw NumberFormatException.forInputString(s);    }} else {    return -result;}    }

2、找出两个数组中相同项
3、二分法 有返回 1 没有返回-1
先排序。。
int[] arrays = new int[]{1,2,3,4,5,6};int find = 4;int result = -1;int start = 0;int end = arrays.length-1;int index = 0while(true){index = (start+end)/2;if(find > arrays[index]){start = index+1;}else if(find < arrays[index]){end = index-1;}else{result = 1;break;}}

4、单向链表 反向输出 输入 a->c->b->e 输出e->b->c->a
参考:http://article.yeeyan.org/view/9225/173996
http://apps.hi.baidu.com/share/detail/30195452
5、字符串中重复最多的字母及其次数
答案竟然是用map,key为字母 value为次数
6、sql

参考:http://blog.csdn.net/ccsuliuxing/archive/2007/04/18/1568821.aspx
http://topic.csdn.net/u/20110110/09/32a1e6ad-c619-4f1f-b79a-b2a226af56bc.html

表A(id number(10),name varchar2(10),regdate date)用户ID,用户姓名,注册时间.
表B(id number(10),groupid varchar2(10))用户ID,用户分组组号
表A(id number(10),name varchar2(10))用户ID,用户姓名

写出下面的SQL语句
1.统计A表中每个月注册用户数
2.统计A表中有姓名相同的用户数
3.如果表A中有姓名相同的用户,把相同的查出,写入表C中
4.A中ID有多个相同的数据,A中姓名相同的ID只保留注册时间最大的数据

1 select   count(*),to_char(regdate, 'yyyymm ')   from   A   group   by   to_char(regdate, 'yyyymm '); 2 select   count(*)   from   (select   name   from   A   group   by   name   having   count(*)   > 1); 3   insert   into   C(name2)   select   name   from   A   group   by   name   having   count(*)   > 1; 4 delete   from   A   E   where   e.regdate   <   (select   max(regdate)   from   a   X   where   E.id   =   X.id); 












热点排行