美团面经合集

面经1

  1. 给一个目标数 t,找出数组中和为t的组合(集合)有多少?

这个是很典型的贪心算法问题,代码如下

public class Mj1 {
    //贪心算法,非最优解
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextInt();
            }
            int target = sc.nextInt();
            System.out.println(Arrays.toString(getTypes(arr,target)));
        }
        sc.close();
    }

    private static int[] getTypes(int[] arr, int target) {
        int[] res = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if(target>arr[i])
                break;
        }
        int index = 0;
        while (target>0&&index<arr.length){
            if(target>=arr[index]){
                target-=arr[index];
                res[index]++;
            }else
                index++;

        }
        return res;
    }
}

求集合的算法暂时还没想到,如果可以重复使用某一个呢?求解~

  1. 面向对象的好处和弊端

好处:基本将继承、封装、多态讲清楚就好
弊端·知乎

  1. JMM,volatile关键字及其使用场景

JMM...

  1. Http协议的get、post和delete区别。

  2. Linux命令,怎么查看cpu使用情况,cpu load的值代表啥。

查看cpu使用情况:top、cat 和free cpu load的值代表cpu的利用率

  1. tcp-ip模型与osi模型的区别

面经2

1.linux信号机制如何实现的?写一下伪代码?
解答:Linux信号(signal) 机制分析
2.电脑开机过程
解答:阮一峰:计算机是如何启动的
3.printf是怎么实现的?

基本上倒着来说就是printf->sprintf->用户级别的puts->sys_puts->puts->putchar方法

4.On求链表中间结点

维护两个指针,一个每次走一步,一个每次走两步,走的快的指向null的时候,此时慢的就处在mid节点。

public class Mj2 {
    static class ListNode{
        int val;
        ListNode next;

        public ListNode(int val){
            this.val = val;
        }
    }

    public ListNode getMid(ListNode head){
        ListNode quick = head;
        ListNode slow = head;
        while (quick!=null){
            if(quick.next!=null){
                quick = quick.next.next;
            }else {
                break;
            }
            slow=slow.next;
        }
        return slow;
    }
}

5.浏览器访问meituan.com的过程?

1.在浏览器输入meituan.com
2.DNS把meituan.com解析成IP,如果用户输入了端口号,则使用用户输入的端口号,否则使用默认的80端口。在解析过程中,DNS会首先通过缓存进行查找,依次按照浏览器缓存-操作系统缓存-路由器缓存-ISP DNS缓存的顺序。如果缓存中都没有记载相应的IP地址,那么DNS服务器将按照根域-顶级域-二级域-…的顺序进行递归查找,并返回查找结果。
3.浏览器向服务器发送HTTP请求
4.服务器返回一个永久重定向响应(code:301),即把meituan.com重定向成www.meituan.com
5.浏览器申请连接重定向后的地址
6.服务器响应请求,并开始向浏览器返回数据,如果资源路径不存在,那么会返回404错误
7.如果6中返回的是页面,根据页面的外链URL,再次进行获取,然后浏览器根据资源类型进行网页渲染,将网页展示给用户并响应用户的操作,在这个过程中操作是同步进行的。

6.socket是什么?端口是什么,两者有什么关系

三者从本质上来说没有可比性,
  socket则是对TCP/IP协议的封装和应用(程序员层面上)。
  也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,
  而HTTP是应用层协议,主要解决如何包装数据。
  关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:
  “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。
  如果想要使传输的数据有意义,则必须使用到应用层协议。
  应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。
  WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
  而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。
  通过Socket,我们才能使用TCP/IP协议。
  实际上,Socket跟TCP/IP协议没有必然的联系。
  Socket编程接口在设计的时候,就希望也能适应其他的网络协议。
  所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,
  从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。
  网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:
  “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。
  这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,
  TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”

7.手写代码题:一个动态规划,一个dfs(写了很久。)

8.笼统问题

介绍下在头条实习都干了什么项目中遇到的难点最近读了什么技术书籍?我说了三本,面试官一本一本问,要求介绍具体内容你大学期间自己做过的印象最深的一件事答:1、自己写的ipl成功引导启动了linux kernel2、修改linux0.11源码,添加了两个系统调用你对你的第一份工作有什么期望你有什么问题要问我?谈谈你的职业规划,和最近在看哪方面的书?

面经3

1.TCP的连接和断开过程(这个比较基础),深入问了为什么断开的时候服务器端不是一次性向客户端发完应答,而是连续发两次信息?(这个真心不会)

TCP的连接和断开过程就是三次握手,四次挥手

2.数学题:0-9999中数字出现6的个数,(每个数中出现多个6需要进行次数累加),要求不能通过编程。

总共有四位数,每位数的可能分别有10种(0~9)。
每一个位,都会出现0-9的交替,实际上在出现6这个角度,各个位是一样的。
现在假设个位固定为6,那么其他的位数的变化数量是10 * 10 * 10 = 1000种。
就是说数字6在个位出现的次数为1000。
以此类推,数字6在十位、百位、千位出现的次数也是1000。
故答案为 4 * 1000 = 4000

4.25匹马选出跑的最快的3匹马,最少需要多少次.

七次。思路&证明。
<step1>把25匹马分为五组进行比赛,每一组都按成绩编号,1>2>3>4>5。可淘汰每一组的4,5,故现在还有15匹马待选。 这样已经比赛5次。
<step2>把每一组的第一名挑选出来比赛,a1>b1>c1>d1>e1,则d,e组都可以淘汰。现在还有九匹马待选。这样已经比赛6次。
<step3> a123 b123 c123 由1和2中步骤知上表中a1一定最快,a2,b1可能可以竞争第二名的位置,a3,b2,c1可以竞争第三名,如此,其余的马匹被淘汰。让a2,b1,a3,b2,c1这5匹马比赛即可确定第二名,第三名。
这样一共比赛7次。

5.java基础 垃圾回收机制,讲一些算法
解答:java垃圾回收机制
6.hashMap与hashtable 还有并发集合
解答:彻底搞懂HashMap,HashTable,ConcurrentHashMap之关联.

7.http基础(三次握手,代理,缓存机制,method)

http缓存机制

Android相关面试题

鸿洋微信公众号
1.java的数据类型

void byte short int long char float double boolean

2.重载和重写的区别

详细对比

重载

1.方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数存在,具有不同的参数/类型,重载Overloading是java的一个类的多态性的一种体现。
2.java中方法的重载,就是在java的同一个类中,创建多个方法,他们具有相同的方法名,但是有不同的参数和不同的定义,调用方法时通过传递给他们不同的参数个数和参数类型来决定具体使用哪个方法,这个就是多态性。

  1. 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准.

重写

1.父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
2.若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
3.子类函数的访问修饰权限不能少于父类的;

3.抽象类和接口的区别

抽象类和接口的区别

4.final关键字可以修饰什么,作用什么

final关键字可以修饰java的类,方法,属性
1.final修饰类,从而这个就不可以被继承,例如String,StringBuffer或者System类
2.final修饰方法,这个方法不能被重写,例如OIbject类的getClass方法
3.final修饰属性,这个属性就是一个常量,通常是大写--即该变量不能使用默认初始化。可以显示的赋值,代码块,构造器。

  1. java权限的四种不同

public protected private default 区别

类别 public protected default private
同一个类
同一个包
子类
不同包

6.Android中Handler的作用?

实现异步的消息处理机制。包含线程队列和消息队列
1.运行在某个线程上,共享线程的消息队列
2.接收消息、调用消息、派发消息和处理消息
3.实现消息的异步处理
具体内容

7.Activity生命周期 和四种启动方式

四种启动模式的应用,试举例。

  1. Fragment的生命周期


更多可见洋神博客

9.listView优化

  • 重用convertView
  • 使用ViewHolder
  • 图片三级缓存
  • 监听滑动事件,滑动的时候不加载数据
  • 开启硬件加速
<activity android:hardwareAccelerated="true" ...>

10.Android内存泄漏,举个例子

Java内存泄漏引起的主要原因:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏
Java内存分配策略:
静态存储区:又称方法区,主要存储全局变量和静态变量,在整个程序运行期间都存在
栈区:方法体的局部变量会在栈区创建空间,并在方法执行结束后会自动释放变量的空间和内存
堆区:保存动态产生的数据,如:new出来的对象和数组,在不使用的时候由Java回收器自动回收

Android中内存泄漏的例子:

  • 单例造成的内存泄漏: 在单例中,使用context.getApplicationContext()作为单例的context
    匿名内部类造成的内存泄漏:由于非静态内部类持有匿名外部类的引用,必须将内部类设置为static
  • Handler造成的内存泄漏:使用static的Handler内部类,同时在实现内部类中持有Context的弱引用
  • 避免使用static变量:由于static变量会跟Activity生命周期一致,当Activity退出后台被后台回收时,static变量是不安全,所以也要管理好static变量的生命周期
  • 资源未关闭造成的内存泄漏:比如Socket、Broadcast、Cursor、Bitmap、ListView等,使用完后要关闭
  • AsyncTask造成的内存泄漏:由于非静态内部类持有匿名内部类的引用而造成内存泄漏,可以通过AsyncTask内部持有外部Activity的弱引用同时改为静态内部类或在onDestroy()中执行AsyncTask.cancel()进行修复

11.说一下Object的常见方法

clone() toString() equals() hashCode(返回对象的hash码)notify() wait()

12.ArrayList和HashMapt的底层实现,扩容原理

ArrayList的底层实现

13.hashCode的意义,怎么重写HashCode

理解hashCode

14.RecyclerView的缓存机制

RecyclerView解析

15.Android的手势检测,事件分发

android手势监测
Android事件分发机制

智力题&算法

  1. 给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?

蓄水池问题

  1. 二叉树前中后按层遍历,怎么只遍历某一层数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,014评论 11 349
  • 1 胖子是一个有啤酒肚的瘦子,是我初中三年最好的哥门儿,他姓刘,胖子这个外号是初二时我送给他的,他胖起来不是因为能...
    大西瓜二宝阅读 653评论 0 1
  • 这世上的爱情,或相濡以沫,携手平凡终老;或相忘于江湖,各自婚娶;或难忘沧海,用尽一生去等待。为了爱情,你会等多久?...
    惊鸿独舞阅读 396评论 4 6
  • 少年的记忆里 永远抹不去的 是那辆摇摇晃晃踽踽而行的驴车 一头温顺的灰驴 一辆木制的架子车 灰驴的四只蹄子相互交替...
    风雨菩提阅读 337评论 0 1