2014奇虎360研发类校园招聘面试题分享

一面:

1. const char *p = "Hello World";
char p[] = "Hello World";
分别求长度和所占用空间大小,有啥区别?


提示:求长度都可以用strlen(p),求占内存空间大小第一个不能用sizeof,第二个可以用sizeof
另外:第二个:strlen(p) = 11, sizeof(p) = 12


2. 给定一个正整数n,将其分成m段,每段为n1,n2,...,nm,求怎么划分使得n1*n2*...*nm最大。

提示:这题和面试官周旋了很长时间,但最后方程式还是未完全写对。



3. 给一个数组a和长度len,删除其中的负数并保证数组中原数据相对次序不变
void removeNegative(int *a, size_t len);

提示:难就难在要
保证数组中原数据相对次序不变,大家头脑风暴吧。



4. 进程通信有哪几种方式?选两种你最熟悉的方式进行具体讲解
两个进程怎么通过共享内存进行通信?(进程间可以共享栈吗?)

# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
# 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
# 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
# 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
# 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。


提示:我讲了共享内存和管道通信两种。



5. 扩展:求一个数组中的第k大的数

提示:这是因为笔试题中最后一题是“求一个数组中的第2大数”,这是引申题目,360就喜欢拿你的笔试题说事,这还没玩,下面还有。



6. 关于笔试题中最后一题是“求一个数组中的第2大数”这题我写的代码有哪些缺陷?


提示:相信大家写出来的代码与我的不相上下,但是我很多问题没考虑,被批的有些惨
(1)判断数组a是否为null,数组长度是否为0和1;

(2)如果数组为3,3,2,1,那么你的代码求出的第二大的数为3但正确答案为2,怎么修改使其正确。

二面:是针对所做过的项目相关问题提问的,这个应该因人而异,
对于做过web方面项目的人有帮助。

7. web测试需要测试哪些方面?举例,比如上传一个大文件Tomcat会崩溃啥的



8. Java中的设计模式相关问题,写个单例模式,解释工厂模式的作用

1.饿汉式单例类

  1. //饿汉式单例类.在类初始化时,已经自行实例化   
  2. public class Singleton1 {  
  3.     //私有的默认构造子  
  4.     private Singleton1() {}  
  5.     //已经自行实例化   
  6.     private static final Singleton1 single = new Singleton1();  
  7.     //静态工厂方法   
  8.     public static Singleton1 getInstance() {  
  9.         return single;  
  10.     }  
  11. }  


2.懒汉式单例类

    1. //懒汉式单例类.在第一次调用的时候实例化   
    2. public class Singleton2 {  
    3.     //私有的默认构造子  
    4.     private Singleton2() {}  
    5.     //注意,这里没有final      
    6.     private static Singleton2 single=null;  
    7.     //静态工厂方法   
    8.     public synchronized  static Singleton2 getInstance() {  
    9.          if (single == null) {    
    10.              single = new Singleton2();  
    11.          }    
    12.         return single;  
    13.     }  
    14. }  

主要还是static决定了单例

9. get和post的区别?知道重定向吗?有哪些分类?

提示:面试官提示
临时重定向和永久重定向



10. 堆、栈和全局区都存放些什么内容?


11. 下面这两句有啥问题吗?
class A {
    int a = 2;
    int b = a + 3;
}
提示:我不知道,求面试官解答,面试官说:在Eclipse下有个提示,提示将a作为静态变量,因为b引用了类中的a而非对象a(可是为什么我的Eclipse下没警告提示???)


12. 从源路径中读取一个文件,写入到目标路径文件中。


13. try{}catch{}finally{}机制


提示:在try中遇到运行时异常时(例如除0操作等)或调用System.exit(1)等导致I/O直接中断,此时不会去运行finally里的语句,异常分类。具体看:http://www.cnblogs.com/lanxuezaipiao/p/3440471.html


14. struts2与struts1的区别,ssh的作用


15. MapReduce的工作机制,里面的排序算法用的是什么(快速排序?)


16. 写过多少行代码?怎么算出来的?


17. 怎么比较自己所拿到的几个offer

提示:我从下面几个方面解答了:工作地点、工作环境、职位发展前景、待遇



18. 知道回调函数吗?举个回调函数的使用场景


19. new和malloc都是堆分配,malloc后返回一个地址例如为p,如果p++后再free(p),是否会出问题?


提示:会,丢失了释放的一些具体信息,如释放内存大小等

原文地址:https://www.cnblogs.com/small-strong/p/3978792.html