剑指Offer——搜狐畅游笔试题+知识点总结,下血本买的

48 阅读4分钟
/\*\*

* @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 list = new ArrayList(); 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、堆  
 ![这里写图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/74ab88a7f2ab453dac5d5a9c24a829bb~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771406410&x-signature=O%2FK1dFAwyVCoEwo%2FPkuNbnl4joU%3D)


#### 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;
}

JavaScript

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)

  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?

  • JS常见的dom操作api

  • 解释一下事件冒泡和事件捕获

  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?

  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?

  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?

  • call,apply,bind

  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

  • 创建对象的多种方式

  • 实现继承的多种方式和优缺点

  • new 一个对象具体做了什么

  • 手写Ajax,XMLHttpRequest

  • 变量提升

  • 举例说明一个匿名函数的典型用例

  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

  • attribute和property的区别

  • document load和document DOMContentLoaded两个事件的区别

  • JS代码调试

开源分享:docs.qq.com/doc/DSmRnRG…