搜狐畅游笔试题知识点总结

举报
SHQ5785 发表于 2023/08/02 09:07:03 2023/08/02
【摘要】 一、情景回顾时间:2016.9.24 10:00-12:00地点:山东省网络环境智能计算技术重点实验室事件:搜狐畅游笔试注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间。当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃!搜狐畅游最后一部分居然是游戏相关的题目,一头雾水,自己只做了45分钟交卷。涉及到的知识点如下,仅供参考。 二、常用的编程技巧; 三、...

一、情景回顾

  • 时间: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);
	}
}

六、附 群硕笔试题

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

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

PCB、堆
这里写图片描述

6.2 Http中get与post的区别

  • 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包体中。
  • GET方式提交的数据最多只能是1024字节(因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。),理论上POST没有限制,可传较大量的数据。
  • 在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。
  • POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为 (1)登录页面有可能被浏览器缓存; (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了; (3)除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

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

6.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;  
    }  
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。