• 一面一得


    一面一得,去面试不能白白去,得有收获。

    今天(2017年3月29号)下午在格瓦拉生活网面试。

    笔试题:

    1.StringBuilder  StringBuffer  String的区别?string 为什么是不可变的?

    答:1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String
      2.String <(StringBuffer,StringBuilder)的原因
        String:字符串常量
        StringBuffer:字符创变量
        StringBuilder:字符创变量
        从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
        1 String s = "abcd";
        2 s = s+1;
        3 System.out.print(s);// result : abcd1

              http://www.codeceo.com/article/why-java-string-immutable.html

    2.排序算法

    http://www.cnblogs.com/0201zcr/p/4764427.html

    /**
         * 选择排序算法
         * 在未排序序列中找到最小元素,存放到排序序列的起始位置  
         * 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 
         * 以此类推,直到所有元素均排序完毕。 
         * @param numbers
         */
        public static void selectSort(int[] numbers)
        {
        int size = numbers.length; //数组长度
        int temp = 0 ; //中间变量
        
        for(int i = 0 ; i < size ; i++)
        {
            int k = i;   //待确定的位置
            //选择出应该在第i个位置的数
            for(int j = size -1 ; j > i ; j--)
            {
            if(numbers[j] < numbers[k])
            {
                k = j;
            }
            }
            //交换两个数
            temp = numbers[i];
            numbers[i] = numbers[k];
            numbers[k] = temp;
        }
        }

    3.单例模式

    http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html

    ** 
     * 方法一
     * 单例模式的实现:饿汉式,线程安全 但效率比较低 
     */  
    public class SingletonTest {  
    // 定义一个私有的构造方法 private SingletonTest() { }
    // 将自身的实例对象设置为一个属性,并加上Static和final修饰符 private static final SingletonTest instance = new SingletonTest();
    // 静态方法返回该类的实例 public static SingletonTest getInstancei() { return instance; } }

    4.智力题(小明一家过桥)
    现在小明一家过一座桥,过桥时候是黑夜,所以必须有灯.现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒.每次过桥只能过2人,两人过桥的速度以最慢者为定.还有过桥后要已过桥的其中一人送灯也算秒速,而灯在30秒后就会熄灭,过桥时不能没有灯.问小明一家怎样过桥?
    答:答案三种:
    1.第一步,小明与弟弟过桥,小明回来,耗时4秒;第二步,小明与爸爸过河,弟弟回来,耗时9秒;第三步,妈妈与爷爷过河,小明回来,耗时13秒;最后,小明与弟弟过河,耗时4秒,总共耗时30秒 
    2.小明和弟弟过桥(3秒) + 小明回来(1秒)+ 爷爷和妈妈过桥(12秒) + 弟弟回来(3秒)+ 爸爸和小明过桥(6秒) + 小明回来(1秒) + 小明和弟弟过桥(3秒)= 29秒 
    3.小明和弟弟过桥(3秒) + 弟弟回来(3秒)+ 爷爷和妈妈过桥(12秒) + 小明回来(1秒)+ 爸爸和小明过桥(6秒) + 小明回来(1秒) + 小明和弟弟过桥(3秒)= 29秒
    (我算成 32秒 )

    5.你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时都付费,如果只许你两次把金条弄断,你如何给你的工人付费?
    答:分成比例1:2:4的三段,因为两次弄断就是三段,第一天你给1,第二天你给2,找回你1,你自己就有1和4,第三天再给1,自己剩下4,第四天给4,然后叫他把1.2找给你,第五天给1,第六天给2叫他1找给你,第七天把最后1给他.


    6.10个箱子,每个箱子里有10个苹果.其中有一个箱子里的苹果每个是9两.其余每箱里的苹果都是10两.但是,只有一个称,只能称一次.怎样一下子称出那箱每个是9两的苹果?
    答:第一箱苹果拿一个,第二箱拿两个,如此类推,第十箱十个.
    一称,少一两就是第一箱,同理少多少量就是多少箱
    (我答成分3次称)

    7.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1

    /**

    * 设计 4 个 ( 可以是 n 个 ) 线程,其中两个线程每次对 j 增加 1 ,另外两个线程对 j 每次减少 1

    */

    package com.jiaocaigen.test;

    public class Test {

    // 采用 Runnable 接口方式创建的多条线程可以共享实例属性

    private int i ;

    // 同步增加方法

    private synchronized void inc(){

    i ++;

    System. out .println(Thread.currentThread().getName()+ "--inc--" + i );

    }

    // 同步减算方法

    private synchronized void dec(){

    i --;

    System. out .println(Thread.currentThread().getName()+ "--dec--" + i );

    }

    // 增加线程

    class Inc implements Runnable {

    public void run() {

    inc();

    }

    }

    // 减算线程

    class Dec implements Runnable{

    public void run() {

    dec();

    }

    }

    public static void main(String[] args) {

    Test t = new Test();

    // 内部类的实例化

    Inc inc = t. new Inc();

    Dec dec = t. new Dec();

    // 创建 2*n 个线程 此处 n=2

    for ( int i = 0; i < 2; i++) {

    new Thread(inc).start();

    new Thread(dec).start();

    }

    }

    }

    8.session和cookie的区别和联系

    cookie 和session 的区别:
    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session。
    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
    考虑到减轻服务器性能方面,应当使用COOKIE。
    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    cookie 和session 的联系:
    session是通过cookie来工作的
    session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。
    在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。

    9.

     

  • 相关阅读:
    API WAVE 专栏
    PCM数据格式(转)
    Windows 下音频数据采集和播放(转)
    java实现FFT变换(转)
    用74HC165读8个按键状态(转)
    机器人局部避障的动态窗口法(dynamic window approach) (转)
    TLD视觉跟踪算法(转)
    FFT算法在单片机中的使用&&LCD12864驱动
    Oracle442个应用场景-----------Oracle数据库物理结构
    Swift具体解释之三----------函数(你想知道的都在这里)
  • 原文地址:https://www.cnblogs.com/daiwei1981/p/6640911.html
Copyright © 2020-2023  润新知