剑指Offer——搜狐畅游笔试题+知识点总结

情景回顾

  • 时间:2016.9.24 10:00-12:00
  • 地点:山东省网络环境智能计算技术重点实验室
  • 事件:搜狐畅游笔试

  注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间。当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃!

  搜狐畅游最后一部分居然是游戏相关的题目,一头雾水,自己只做了45分钟交卷。

  涉及到的知识点如下,仅供参考。

常用的编程技巧;

对Spring IOC与AOP的理解;

  详见博文《J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC 与AOP》。

查找10亿随机数字中重复出现次数前100的数字,并写出最优算法,说明算法复杂度;

观察者设计模式

  详见博文《大话设计模式(五)观察者模式》。

package cn.edu.ujn.practice;
import java.util.List;
import java.util.ArrayList;

public class Test_Of_Publish_Subcribe {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Subject sj = new ConcreteSubject();
        Observer ob = new ConcreteObserver();
        sj.attach(ob);
        sj.notifyObserversByPush("Hello");
        sj.notifyObserversByPull();
    }
}

interface Subject{
    // 添加订阅者
    public void attach(Observer ob);
    // 删除订阅者
    public void detach(Observer ob);
    // 以推方式通知订阅者
    public void notifyObserversByPush(String str);
    // 以拉方式通知订阅者
    public void notifyObserversByPull();
}

interface Observer{
    // 推模式
    public void updateByPush(String str);
    // 拉模式(注意参数为接口)
    public void updateByPull(Subject s);
}

class ConcreteSubject implements Subject{
    List<Observer> list = new ArrayList<Observer>();
    private String name = "demo";
    private int age = 10;

    public String getName(){
        return name;
    }

    public int getAge(){
        return age;
    }

    // 添加订阅者
    public void attach(Observer ob){
        if(!list.contains(ob))
            list.add(ob);
    }
    // 删除订阅者
    public void detach(Observer ob){
        if(list.contains(ob))
            list.remove(ob);
    }
    // 以推方式通知订阅者
    public void notifyObserversByPush(String str){
        for(Observer o : list){
            o.updateByPush(str);
        }
    }

    // 以拉方式通知订阅者
    public void notifyObserversByPull(){
        for(Observer ob : list){
            ob.updateByPull(this);
        }
    }
}

class ConcreteObserver implements Observer{
    // 推模式
    public void updateByPush(String str){
        System.out.println(str);
    }
    // 拉模式
    public void updateByPull(Subject s){
        String name = ((ConcreteSubject)s).getName();
        System.out.println(name);
    }
}

附 群硕笔试题

1.同一进程的多线程共享那些资源?

  线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。

  PCB、堆

2.Http中get与post的区别?

Http get与post的区别

  • 1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如: login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

     POST把提交的数据放置在是HTTP包体中。
  • 2.GET方式提交的数据最多只能是1024字节(因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。),理论上POST没有限制,可传较大量的数据。
  • 3.在ASP中,服务端获取GET请求参数用Request.QueryString,获取POST请求参数用Request.Form。在JSP中,用request.getParameter(\”XXXX\”)来获取,虽然jsp中也有request.getQueryString()方法,但使用起来比较麻烦,比如:传一个test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。
  • 4.POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为 (1)登录页面有可能被浏览器缓存; (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了;

    (3)除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

3.MVC设计模式的含义,各层的作用。

4.计算第10001个质数。

package cn.edu.ujn.practice;
/**
 *
 * @author SHQ
 *
 *前6个质数为:2,3,5,7,11,13,那第6个质数为13,求第10001个质数
 *
 */
public class test {
    public static void main(String[] args) {
        System.out.println(resolution(10001));
    }

    private static Long resolution(int num){
        if (num <= 0)
            return null;
        else if(num == 1)
            return (long)2;
        else{
            int cnt = 1;
            Long init = (long) 3;
            Long result = null;
            while(cnt < num){
                if(isPrimeNumber(init)){
                    result = init;
                    cnt++;
                }
                init += 2;
            }
            return result;
        }
    }

    /**
     * 判断是否是素数
     *
     * @param n
     * @return
     */
    private static boolean isPrimeNumber(Long n) {
        if (n < 2) {
            return false;
        }
        double max = Math.sqrt(n);
        for (int i = 2; i <= max; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}




剑指Offer——搜狐畅游笔试题+知识点总结的更多相关文章

  1. 剑指Offer——完美+今日头条笔试题+知识点总结

    剑指Offer--完美+今日头条笔试题+知识点总结 情景回顾 时间:2016.9.28 16:00-18:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:完美世界笔试 ...

  2. 剑指Offer——小米+小红书笔试题+知识点总结

    剑指Offer--小米+小红书笔试题+知识点总结 情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事 ...

  3. 【剑指Offer学习】【面试题:二维数组中的查找】PHP实现

    最近一直看剑指Offer.里面很多算法题.于是就想着用PHP来显示一下. 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的 ...

  4. 《剑指offer(第二版)》面试题60——n个骰子的点数

    一.题目描述 把n个骰子仍在地上,所有的骰子朝上的一面的点数之和为s,输入n,打印出s所有可能的值出现的概率. 二.题解 <剑指offer>上给出的两种方法,尤其是代码,晦涩难懂且没有注释 ...

  5. 《剑指offer(第二版)》面试题64——求1+2+...+n

    一.题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句 (即三元运算符,A? B : C) 二.题解 虽然求和问 ...

  6. 《剑指offer(第二版)》面试题55——判断是否为平衡二叉树

    一.题目大意 输入一颗二叉树,判断该二叉树是否为平衡二叉树(AVL树). 二.题解 <剑指offer>上给出了两种解决方式: 1.第一种是从根节点开始,从上往下遍历每个子节点并计算以子节点 ...

  7. 结合《剑指offer(第二版)》面试题51来谈谈归并排序

    一.题目大意 给定一个数组A,对于数组A中的两个数字,如果排在前面的一个数字大于(必须大于,等于不算)后面的数字,则这两个数字组成一个逆序对.要求输出数组A中的逆序对的总数.例如,对于数组{7,5,6 ...

  8. 经典面试题目——找到第n个丑数(参考《剑指offer(第二版)》面试题49)

    一.题目大意 给你一个数n,要求返回第n个丑数.其中,丑数的定义如下: 丑数是指只包含因子2.3和5的数.(数字1也是丑数,不过是个特例)引用<剑指offer>上的话来说,对于一个数M,如 ...

  9. 《剑指offer(第二版)》——面试题36:二叉搜索树与双向链表

    具体的题目大意和参考思路在此处不详述(见<剑指offer>),实质就是在中序遍历的过程中调整指针的指向,关于中序遍历有递归和非递归两种操作,所以此处也用了两种方法. 方法1(递归法): 代 ...

随机推荐

  1. 51nod 1103 N的倍数(抽屉原理)

    1103 N的倍数 题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍 ...

  2. 【HNOI2016】序列 莫队+单调栈+RMQ

    Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar.若1≤l≤s≤t≤r≤n,则称a ...

  3. bzoj 3998: [TJOI2015]弦论

    Description 对于一个给定长度为N的字符串,求它的第K小子串是什么. Input 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个. ...

  4. poj 1113 凸包周长

    Wall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33888   Accepted: 11544 Descriptio ...

  5. 例10-12 *uva1637(概率dp)

    题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 思路: 直接用搜索,表示出每摞剩余的牌数,然后利用全概率公式即可(P(A) = p(A|b1)*p(b1)+.. ...

  6. hdu 5637 BestCoder Round #74 (div.2)

    Transform  Accepts: 7  Submissions: 49  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 131072 ...

  7. [BZOJ]1076 奖励关(SCOI2008)

    终于又一次迎来了一道期望DP题,按照约定,小C把它贴了出来. Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃 ...

  8. 环境变量方式使用 Secret - 每天5分钟玩转 Docker 容器技术(158)

    通过 Volume 使用 Secret,容器必须从文件读取数据,会稍显麻烦,Kubernetes 还支持通过环境变量使用 Secret. Pod 配置文件示例如下: 创建 Pod 并读取 Secret ...

  9. 5-15 QQ帐户的申请与登陆 (25分) HASH

    实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数NN(\le 10^5≤10​5​​),随后给出NN行指令.每行指令的格 ...

  10. [坑况]饿了么你是这样的前端——vue+element ui 【this dependency was not found:'element-ui/lib/theme-chalk/index.css'】

    element ui 坑况:今日pull代码,潇洒npm run dev ,被告知:this dependency was not found:'element-ui/lib/theme-chalk/ ...