• 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),是否会出问题?


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

  • 相关阅读:
    t体育课了
    Scrapy、Scrapy-redis组件
    爬虫案例(js动态生成数据)
    UA池和代理池
    增量式爬虫(简易)
    基于scrapy-redis分布式爬虫(简易)
    全栈爬取-Scrapy框架(CrawlSpider)
    scrapy中selenium的应用
    scrapy框架的日志等级和请求传参
    scrapy框架之递归解析和post请求
  • 原文地址:https://www.cnblogs.com/small-strong/p/3978792.html
Copyright © 2020-2023  润新知