黑马程序员技术交流社区

标题: 社招面试会问到的问题!刚整理好。共享了。 [打印本页]

作者: 小沈同学    时间: 2015-7-20 23:10
标题: 社招面试会问到的问题!刚整理好。共享了。
下列题目是我们基础班几个提前参加社招的同学总结的问题,希望对大家有所帮助。答案是我个人的理解所以一定会有些不全面甚至不对的地方,但是是我自己的答案,所以你们觉得有问题可以提出来我纠正。
1,说一下堆和栈的区别?
        栈的内存空间是由系统自动分配的。例如int a;系统就自动在栈里开辟个空间给a使用。
        它存取速度比堆要快,而且栈里面的数据可以共享,存放的数据是一些基本类型的数据,特点是存放在栈里的数据被调用完立马消失。
        堆的内存空间是由程序员自己申请(new)出来的。
        堆内存主要用来存储引用类型,特点是堆里面的数据被调用完毕后不会马上消失,而是在某个不确定的时间后被垃圾回收器清理掉。
2,TreeSet的排序方式有几种,详细描述?
        A.自然顺序
                让对象所属的类去实现comparable接口,然后重写这个接口的comparto方法进行比较,根据这个比较的结果去进行排序。
        B.比较器接口,comparator接口
                在创建对象时使用带参构造传一个实现比较器接口的匿名内部类并重写它的方法就可以进行比较了。
3,线程生命周期,是怎么样的?
        新建,就绪,运行,堵塞,死亡
        新建是创建线程。
        就绪是获得执行资格但是没有执行权。
        运行不解释。
        堵塞,就是当线程运行到符合某个我们定义的条件时,它会停止下来等待唤醒
        死亡就是线程结束了。
4,线程死锁是什么,为什么有死锁,怎么解决死锁?
         为了解决程序因占用资源,出现资源争抢,而出现的程序进入等待的状态(死锁)。
        举例:有A和B两个线程,有CD 两把锁, A和B嵌套CD锁,A线程中有C,D锁,B线程中有D C两把锁,当两个线程运行时,就可能会出现死锁导致
程序停滞的情况。
        怎么解决:真正意义上来说,死锁是不能被解决的,死锁是多线程中的一个需要避免的重大的问题,当我们在编写程序时,可以给共享的资源加上另外一
个把锁,控制资源的动态,同时可以设置线程的优先级使线程之间协调合理的利用CPU的时间。
5,类和对象是什么?
        类是对某种事物的抽象统称,例如学生,是一个群体,他们有着共同的特征。
        对象是类的实例,例如说在学生这个类里面有一个叫做小明的学生,他有着具体的特点,这个时候就把他叫做是这个学生类的对象。
6,集合包括哪些类?
        list--|ArrayList
                |Vector
                |LinkedList
        Set -| TreeSet
                 | HashSet
        Map -  |HashMap
                |Hashtable
                |Properties
                |TreeMap
7,java有多继承吗?
        有,接口可以多继承,因为接口只是一个功能的拓展,他多继承只是让本身具备更多的功能而已,而多继承之所以会出错的原因,比如说一个普
通类继承了多个类的时候,如果这多个类有些相同的方法时,这个类就不知道要去继承哪一个类的方法。而接口就没有这种错误,因为如果接口去继承其
他多个接口的话,哪怕其他接口有一些相同的方法,又因为接口中的方法都是抽象的没有方法体,所以在继承时也只会保留下来一个。
8、你是怎么理解面向对象的
        他有3个特点:更符合思考习惯,让程序员从执行者变成指挥者,把复杂的事情简单化。
        我是这样理解的,比如说我要得到某种结果或者完成某件事情的时候,我并不需要自己亲自的完成这一系列的过程,只需要找到能够帮助我完成
需求的工具就可以很高效的达成目标了,我觉得这个过程就叫面向对象。
9、接口跟抽象类的区别
        成员特点        抽象类中可以有成员变量跟成员常量,有构造方法,除了抽象方法外也可以有非抽象方法。
                        接口中只有常量,默认修饰符是public static final,接口中只有抽象方法默认修饰符是public abstract。
        关系特点  类跟类之间只能单继承跟多重继承。
                        类跟接口可以单实现、多实现,也可以在继承一个类的时候再实现一个或者多个接口。
                         接口跟接口可以单继承也可以多继承。       
        设计理念   继承体现的关系是is a  代表子类就是父类的一个延伸,就是说有地方用到父类的时候完全可以用子类替代。
                        接口体现的关系是like a  它定义的是整个体系的扩展内容。
10、说说你对异常的理解
        异常就是在程序编译或者运行的时候会出现的一些错误,比如说我要往一个指定的文件写入数据,但是这个时候虚拟机又不敢确定在硬盘里有没
有这个文件,所以为了避免发生错误,就需要我们来指定当出现这种情况时虚拟机要做出什么动作。例如抛出异常让虚拟机处理,或者我们用try、catch
处理。
11、list跟set的区别
        list是元素有序,并且可重复的。
                这个有序说的是存放数据时的顺序是怎么样的那我们将来取出元素调用的时候就是怎么样的,而且多个相同的元素并不会影响储存。
        set是元素无序,并且唯一的。
                无序说的是我们在取出元素时不是按照我们当初存的顺序出来的,比如说我打印这些元素会发现每次打印,元素的位置都不一样。
                但是通过实现comparable或者实现comparator接口也可以给元素排序。
12、基本的io流有哪些
        字符流两种:FileWriter、FileReader       
        字节流两种:FileOutputStream、FileInputStream
        高效字符流两种:BufferedWriter、BufferedReader
        高效字节流两种:BufferedOutputStream、BufferedInputStream
        打印流:printWriter、printReader
        转换流:InputStreamReader、OutputStreamWriter
        标准输入输出流:System.in、System.out
        序列化流:ObjectInputStream、ObjectOutputStream
13、反射是什么?反射获取字节码文件的三种方式?反射的好处?
        在运行状态下,通过class文件对象(Class的对象),去使用构造方法,成员变量,成员方法。就是反射。
        3种方法:
                A.用Object类的getClass方法得到。
                B.用任意数据类型的静态class属性可以得到
                C.用Class类的静态方法forName(String className)方法得到
        好处:只要有一个类或者一个类的对象,就可以得到这个类或对象的所有属性和方法。包括私有的。
14、单例的两种模式
        (这个我还没有透彻理解所以只给模式名)
        饿汉式
        懒汉式
16、内部类
        (这个也是了解不深)
        成员内部类,他是在class中又直接定义一个class
        局部内部类,在方法中定义一个class
        匿名内部类,他是没有名字的内部类,我用的最多的地方是在创建对象要带参的时候用到他。他是一次性的用完就不能用了。
17、map的特点,怎样获取键值
        把数据按照键跟值的特点存储在集合里,使用的时候可以通过键得到值,键是唯一的,值却可以重复。
        有个方法keySet可以得到集合里的键,有了键再遍历就可以获取值。
18、static的作用?
        1.被static修饰的成员是被所有对象共享的。
        2.随着类的加载而加载。
        3.优先于对象存在。
        4.可以直接被类名调用。
19、接口和抽象类的区别
        1.接口里面都是抽象方法,只有常量;抽象类里面不一定都是抽象方法,可以有成员变量也可以有常量
        2.接口是功能的扩展;而抽象类是抽取子类的共性功能,强制子类必须按照抽象类方法重写。
20、ArrayLIst和LinkedList的区别?为什么ArrayList查询快
        ArrayList底层是数组结构,特点是查询快增删慢;LinkedList底层是链表结构,特点是增删块查询慢。
        因为ArrayList底层是数组结构,通过数组的索引值我们就可以做到快速查询!
22、字节流和字符流的区别
        字符流的底层是字节流,最早的时候只有字节流,后来为了能够支持文字所以开发出了字符流,字符流能更高效的处理文本数据;
        同时如果要处理的是文本数据的话就可以用字符流,但如果要处理多媒体文件的时候就只能使用字节流。
        因为java使用的编码是unicode编码,一个字符等于两个字节。
23、多线程的两种实现方式,它们有什么区别
        两种,
        1.对象对应的类继承Thread类,这种可以直接调用start方法开启多线程。
        2.对象对应的类实现Runnable接口,这种要重新new一个Thread对象把对象作为参数传进去才能调用start方法。
        开发一般用第二种,他避免单继承的局限性。实现资源与线程的分离

24、对网络通信协议的理解
        (忘了)
25、线程开启调用什么方法
        如果对象对应的类继承的是Thread类的话那么用对象调用start方法就可以开启线程;
        如果对象对应的类是实现Runnable接口的话,就必须把这个对象转化成Thread类再调用start方法。转换方式就是new一个Thread对象并把实现Runnable接口的类的对象作为参数传进去就可以了。

编程题:
        1.复制某盘下所有(包括子目录)“.java”后缀的文件到另一目录下。
        2.把D盘下的所有.java文件改成.txt后缀并复制到另一个目录下,或者把绝对路径储存在.txt文档里
        3.定义一个学生类,属性有名字,语文分数,数学分数,英语分数。键盘录入5个学生跟分数,按照总分先排序再写进txt文档,要求在文档里要清晰明了查看这些数据。


作者: 小沈同学    时间: 2015-7-20 23:11
本帖最后由 小沈同学 于 2015-7-21 17:46 编辑

26、==和equals()的区别?
                ==:
                        比较基本类型:比较的是基本类型的值是否相同。
                        比较引用类型:比较的是引用类型的地址值是否相同。
                equals():
                        比较引用类型,默认比较的是引用类型的地址值是否相同。
                        如果类重写了该方法,那就得按照重写后的规则进行比较。
27、局部变量跟成员变量的区别
        成员变量-定义在类中方法外,有默认初始化值,在堆内存里,被对象调用完后才从内存消失
        局部变量-定义在方法中或者是方法形式参数,没有默认初始化值,在栈内存里,被方法调用完消失
29、多线程同步锁
        synchronized
编程题补充:1,用ArrayList<Uese>集合存储自定义的uese对象,有姓名和年龄属性,姓名相同则是重复,去重,按照年龄大小排序

2.随机产生50个1-10的随机数,去重复


3,C盘下里的a.txt文件,有两行数字和字母相间的内容,要求把字母放在第一行,数字放在第二行。

1、编写程序,循环接收用户从键盘输入的多个字符,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

2、定义一个二维数组,编写代码获取最小元素。

3、创建ArrayList对象,添加5个元素,使用Iterator遍历输出。

4、编写程序,生成5个1-10之间的随机数,存入一个List集合,编写方法对List集合进行排序(自定义排序算法,禁用COLLections.sort方法和TreeSet

)然后遍历集合输出。

5、写出两种排序算法。

6、写一个延迟加载的单例设计模式。

7、写一个方法,计算一个int类型数组中每一个元素的总和,和最大值和最小值。

8、一个ArrayList对象aList中存在有若干个字符串元素,现欲遍历该ArrayList对象,并删除其中所有值为“abc”的字符串元素,请用代码实现。

9、编写一个程序,把这个目录下的所有.java文件拷贝到另一个目录中,并将.java改成.txt(需注意:写的时候先写思路,然后写代码,代码后面跟着

注释)。

10、让用户输入他的语文和数学成绩,并计算他的总成绩并且显示出来。

11、取出一个字符串中字母出现的次数。如字符串“abcdekka27qoq”,输出格式为a(2)b(1)k(2)....


作者: vinoMVP    时间: 2015-7-20 23:11
不错,先收藏一下
作者: 白面馅包子    时间: 2015-7-20 23:13
不错  我是基础班 的  先收藏一下 学完后 看看自己能不能回答上
作者: 我本灬无名    时间: 2015-7-20 23:17
问的有点广泛,社招都不细致吗?
作者: 小沈同学    时间: 2015-7-20 23:23
我本灬无名 发表于 2015-7-20 23:17
问的有点广泛,社招都不细致吗?

根据每个人的程度提问吧,老师会先了解你的情况再根据你的情况去提问。
作者: 我本灬无名    时间: 2015-7-20 23:25
小沈同学 发表于 2015-7-20 23:23
根据每个人的程度提问吧,老师会先了解你的情况再根据你的情况去提问。 ...

我们点招,问的稍难但是,问的都很具体。编程题好简单。。。。
作者: umbriel    时间: 2015-7-20 23:37
先收藏下,学习了
作者: 蔡锐    时间: 2015-7-21 07:13
学到了!感谢分享!
作者: 无与伦比的禽兽    时间: 2015-7-21 08:02
收到收到
作者: kelly    时间: 2015-7-21 08:30
我擦勉强能答上一半吧,想进黑马还得努力啊
作者: tsldxszd    时间: 2015-7-21 08:41
多谢 无私分享
作者: mortonnnn    时间: 2015-7-21 08:53
非常感谢!!!非常感谢
作者: WHY-y    时间: 2015-7-21 09:12
很牛逼!果断收藏了!
作者: 小丑    时间: 2015-7-21 11:32
果断收藏了,谢谢楼主了!
作者: 朝着梦想使劲冲    时间: 2015-7-21 12:26
一部分不懂  一部分让我受教了
作者: fecuznmn    时间: 2015-7-21 17:26
好帖 感谢!
作者: 不怕黑人    时间: 2015-7-21 17:47
收藏了 感谢
作者: 陈建民1    时间: 2015-7-21 18:10
已收藏,说不定以后有大用!
作者: Wqi    时间: 2015-7-21 18:14
先收藏了。等基础学完看能不能回答上来。谢谢了楼主
作者: 360638403    时间: 2015-7-21 18:30
多谢分享
作者: 小灬清新丶    时间: 2015-7-21 18:45
收藏,学习了~~~
作者: 鹰隼展翼    时间: 2015-7-21 19:50
不错不错赞一个
作者: 梦想起航    时间: 2015-7-21 20:15
已收藏。
作者: 为明天而奋斗    时间: 2015-7-21 20:31
恩恩,不错
作者: 小沈同学    时间: 2015-7-21 21:01
我本灬无名 发表于 2015-7-20 23:25
我们点招,问的稍难但是,问的都很具体。编程题好简单。。。。

其实我感觉也是简单,基本都是在视频里有教的题目。关键是这些编程题是要求手写代码,虽然有一个小时,但是如果平时代码量少的话根本就写不出来的。
作者: 何时归来看花开    时间: 2015-7-21 21:05
灰常感谢,不知道面试题是不是就是从这些题里随机抽取的
作者: tao13yang    时间: 2015-7-21 21:09
感谢分享
作者: chad8753    时间: 2015-7-21 21:27
赞,,,,
作者: wengjialiang    时间: 2015-7-21 21:37
好吧,问得很详细
作者: Sparky    时间: 2015-7-21 21:40
先收藏着备用感谢楼主的分享
作者: lsunshine    时间: 2015-7-21 21:41
不错{:2_36:}
作者: Queen_one    时间: 2015-7-21 21:45
感觉好多都没学过~不过 也学了很多。诶 任重道远 要学的东西还是很多的!加油
作者: T-l-H、小生    时间: 2015-7-21 21:53
不错,感谢分享
作者: 天人之珠    时间: 2015-7-21 21:53
收藏了 感谢
作者: 袁月明    时间: 2015-7-21 21:53
赞,就业班见
作者: 莱克神    时间: 2015-7-21 21:54
表示基本不会
作者: 失眠的考拉    时间: 2015-7-21 22:08
好东西,感谢分享!
作者: 狮子王    时间: 2015-7-21 22:15
好帖!         
作者: zhaoyue    时间: 2015-7-21 22:17
java语言不是只支持多层继承体系吗?你提的那个接口还没学到啊。。
作者: 句子    时间: 2015-7-21 22:19
Thank you!

作者: 如空    时间: 2015-7-21 22:33
好东西,正需要
作者: wing-SF    时间: 2015-7-21 22:41
大哥啊,你这样,黑马会封贴吧,应该是不会让所有人看的。不过,我收藏了,嘿嘿
作者: Sparky    时间: 2015-7-21 22:43
收藏了 谢谢分享
作者: hncddk    时间: 2015-7-21 22:44
先收藏一下
作者: ddddk    时间: 2015-7-21 23:00
收藏了 非常好的帖子
作者: 小沈同学    时间: 2015-7-22 13:12
zhaoyue 发表于 2015-7-21 22:17
java语言不是只支持多层继承体系吗?你提的那个接口还没学到啊。。

很快你就学到了

作者: LGQ    时间: 2015-7-22 13:22
收藏了,这样就更有方向学习了
作者: 章浩    时间: 2015-7-22 16:47
感谢楼主分享   慢慢学习
作者: 天人之珠    时间: 2015-7-22 21:20

不错  我是基础班 的  先收藏一下 学完后 看看自己能不能回答上
作者: lixiaopeng    时间: 2015-7-23 22:10
我以前学过java和.net,现在转成了IOS,写的不错,值得学习借鉴。
作者: 王庆艳    时间: 2015-7-23 22:43
学习了,谢谢
作者: 蔡锐    时间: 2015-7-24 08:49
已存,我会针对的去复习的!
作者: liuch111    时间: 2015-7-24 10:23
thanks····
作者: 痴人说梦    时间: 2015-7-24 10:49
不错不错 收藏了
作者: WHY-y    时间: 2015-7-24 11:06
我又来了,再吸取吸取经验
作者: maqijian    时间: 2015-7-24 11:42
默默的收藏,楼主好人,一生平安
作者: lh5484826    时间: 2015-7-24 15:50
还在努力进入黑马中,看到你的面试题我心已经凉一半了。。。
作者: aa233192133    时间: 2015-7-24 17:04
考这么多的啊   还要加油啊
作者: AllenIverson    时间: 2015-7-24 18:01
面试前多看多做一些面试题,帮助很大。谢谢分享。
作者: 飞飞飞丨    时间: 2015-7-24 18:08
感谢分享
作者: oooohnick    时间: 2015-7-24 18:17
好东西!!! 感谢分享!!!
作者: 为了理想而奋斗    时间: 2015-7-24 19:16
谢谢楼主分享
作者: 仨儿先森    时间: 2015-7-24 19:34
好东西,多谢分享
作者: 越王剑    时间: 2015-7-24 22:43
分享是一种美德,多谢分享
作者: Vampire..    时间: 2015-7-26 16:32
收藏留着看
作者: softzhang    时间: 2015-7-26 17:13
小沈同学 发表于 2015-7-20 23:11
26、==和equals()的区别?
                ==:
                        比较基本类型:比较的是基本类型的 ...

不错,留着多看看,有备无患
作者: lh5484826    时间: 2015-7-26 17:14
感谢无私分享!!!!!
作者: 郁金香大公爵    时间: 2015-7-26 17:45
比较全面,感谢分享
作者: tsldxszd    时间: 2015-9-10 16:36
帮大忙系列
作者: zhangcheng0403    时间: 2015-9-10 18:17
真心不错啊
作者: bgxpf    时间: 2015-9-10 18:26
点招难度跟社招完全不一样,我想哭去
作者: 15210373205    时间: 2015-9-10 18:31
先收藏了
作者: 袁劲松    时间: 2015-9-10 19:21
先收藏了,回头看
作者: chensheng06    时间: 2015-9-10 20:25
bgxpf 发表于 2015-9-10 18:26
点招难度跟社招完全不一样,我想哭去

你的意思点招太难?
作者: yangshibai    时间: 2015-9-10 20:45
多谢分享,先mark
作者: cuiwg930905    时间: 2015-9-10 20:48
努力成为大神~~
作者: yz112069947    时间: 2015-9-10 21:13
很广泛~~~~
作者: kuikui    时间: 2015-9-10 21:28
感谢分享,很详细,收藏了
作者: bgxpf    时间: 2015-9-10 21:46
chensheng06 发表于 2015-9-10 20:25
你的意思点招太难?

点招很容易,都是老师讲过的内容,社招就不一样了,十个基础测试十个入学测试,有容易的也有很难的.有些面试老师问的问题特别细,你在论坛看到的面试攻略各种知识点总结,人家可能会特意去避开,因为论坛太多人共享自己的面试问题了.所以要是你学习得不好,可能有些知识点都被忽略了,而恰恰忽略的知识点就可能刚好是老师问到的.所以复习一定要全面啊,不单单重点是集合io多线程反射,其他也要看一下的.
作者: chensheng06    时间: 2015-9-11 08:24
bgxpf 发表于 2015-9-10 21:46
点招很容易,都是老师讲过的内容,社招就不一样了,十个基础测试十个入学测试,有容易的也有很难的.有些面试 ...

是的  复习全面些总是好的
作者: 纳木错的程序猿    时间: 2015-9-11 08:57
看来还得多学习啊,有挺多不懂的。
作者: ln0491    时间: 2015-9-11 09:21
学习了。。。。。。。。。。。。
作者: hhuxiaolang    时间: 2015-9-11 09:28
mark,多谢,最后复习用
作者: song520a22    时间: 2015-9-11 14:46
非常感谢分享
作者: zjingwen    时间: 2015-9-11 22:23
谢谢分享,收藏了
作者: az4243859    时间: 2015-9-11 22:25
收藏,希望以后能用上
作者: sharpCsu    时间: 2015-9-11 22:31
感谢分享, 收藏了
作者: 京巨    时间: 2015-9-11 23:04
多谢,收藏一下
作者: z6528328    时间: 2015-9-11 23:37
有点难,挺考验基础的,多加油吧
作者: WOJIAOLIZHEN01    时间: 2015-9-15 11:29
挺不错了,可以先收藏了
作者: yuanqingleivip    时间: 2016-5-22 12:21
先mark一下,以后再看。
作者: success560    时间: 2016-5-22 16:14
好厉害 ,好厉害啊
作者: 68846259    时间: 2016-5-22 16:18
好文必mark...

作者: rogerpbj    时间: 2016-5-22 16:32
拿下~~哈哈

作者: 王子鹏    时间: 2016-5-22 16:50
收藏了  谢谢楼主!
作者: demon凯    时间: 2016-6-1 17:28
谢了     努力复习中  我一定要考进去
作者: demon凯    时间: 2016-6-1 17:30
chensheng06 发表于 2015-9-10 20:25
你的意思点招太难?

大家不都说社招难一点吗
作者: demon凯    时间: 2016-6-1 17:31
chensheng06 发表于 2015-9-11 08:24
是的  复习全面些总是好的

复习全面是必要的 不能归到难里面去啊
作者: 一个大西瓜    时间: 2016-6-1 21:09
很有用,先收藏了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2