2021腾讯社招java技术岗面试题

目录

一、背景

二、一面面试题

三、二面面试题

四、总结

五、参考资料


一、背景

最近面试了腾讯技术岗,一面和二面问了一些问题,下面给大家分享一下,有些题目是我根据自己的情况回答的,可以参考一下,小伙伴也可以试着自己回答一下。


二、一面面试题

自我介绍一下?

我叫....,负责什么什么项目,主要做什么工作,bababa.........

看简历上写着使用过poi操作过excel,那么poi对于公式是如何操作的?

正确答案应该是下面的代码,创建一个单元格,设置单元格类型为公式,最后设置公式值。但是没想到怎么说,没回答上来。

cell = row.createCell(2); 
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); 
cell.setCellFormula("SUM(C2:C3)");

简历上写着做过文件拆分,介绍一下文件拆分怎么实现的?

我是通过将大文件流放到BufferedReader里面,根据参数splitSize计算需要拆分成几个小文件,需要几个文件,我们就创建几个,放到list集合里,一行一行遍历源文件,第一行的内容所以文件都写入,除第一行外的内容,随机写入创建的小文件里面。最后把所有的小文件关流。 参考:java实现csv大文件拆分,每个小文件都有标题行

线程和进程的区别?

根本区别:进程是并发执行的程序在执行过程中分配和管理资源的基本单位,线程是任务调度和执行的基本单位。一个进程可以有多个线程。

地址空间:进程有自己独立的地址空间,线程没有自己独立的地址空间,同一进程的线程共享本进程的地址空间。

资源拥有:进程之间的资源是独立的,同一进程内的线程共享本进程的资源。

执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,但是线程不能独立运行,必须依存在应用程序中。

系统开销:进程执行开销大,线程执行开销小。

0

创建一个进程的话需要分配什么资源?

需要分配包括用于存放程序正文、数据的磁盘和内存地址空间,以及在运行时所需要的I/O设备,已打开的文件,信号量等。

进程之间是怎么通信的?

(1)、匿名管道通信

(2)、高级通道通信

(3)、有名管道通信

(4)、消息队列通信

(5)、信号量通信

(6)、信号

(7)、共享内存通信

(8)、套接字(Socket)通信

看你简历上写作jgit进行版本控制,介绍一下这个项目?

jgit是引入的一个maven依赖,当实施人员在管理台修改配置文件时,点击保存通过jgit模拟git命令提交到远程git仓库,将修改的这一版保存下来,详情请查看:通过jgit初始化本地仓库,与远程库建立连接

垃圾回收了解过吗?

了解过,我主要回答了新生代有Eden区,Survivor1区,Survivor2区,比例是8:1:1,大对象会直接保存在老年区,大家可以参考:咱们从头到尾说一次 Java 垃圾回收 - 知乎

什么时候会触发full gc?

(1)老年代空间不足时会自动触发

(2)手动调用了System.gc();

ArrayList 和LinkedList的区别?

ArrayList基于动态数组实现的非线程安全的集合;LinkedList基于链表实现的非线程安全的集合。

数组的底层实现是什么?

这个问题当时没有回答上来,查了一下资料,我的理解就是Array的一些方法,比如add,get,set方法是怎么实现的吧

你有什么问题要问的?

问了一下自己想要问的,入职以后会在哪个部门工作等等吧


三、二面面试题

自我介绍

我叫....,负责什么什么项目,主要做什么工作,bababa.........

手写一道算法题:

(1)一个字符串 1234,如何转换为数字1234.

(2)假如是不固定位数的一个字符串如何转换为数字

public class StringTest {

    public static void main(String[] args) {
        String string = "1234";
        char[] chars = string.toCharArray();
        int sum = 0;
        for (int i = 0; i < chars.length; i++) {
            int pow = (int) Math.pow(10, chars.length - i - 1);
            int aChar = (int) chars[i] - 48;
            sum = sum + (aChar * pow);
        }
        System.out.println(sum);
    }
}

线程锁有哪些?

回答了synchronized锁, ReentrantLock锁,synchronized锁是重量级锁,ReentrantLock可重入锁

多线程处理变量会有什么问题,怎么解决?

会出现线程安全性,多个线程同时操作一个变量,会出现变量不准确的情况,每次只有一个线程可以操作变量,对操作变量的方法加锁,每个线程只有获取锁后才能操作。

操作系统进程相关的了解过吗

这个我确实不懂,就没有怎么说,大家可以自行学习。

你有什么问题要问的?

问了入职后的一些工作情况,我会在哪个部门工作。


四、总结

以上就是个人面试情况的一些总结,能力目前比较有限,有一些问题回答的不是很好,大家可以参考一下,自己查漏补缺复习一下,希望对小伙伴有帮助,觉得不错的话,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。


五、参考资料

进程与线程的区别?

https://jingyan.baidu.com/article/11c17a2cf213eff446e39d1d.html

操作系统给进程分配资源,具体是哪些资源呢

操作系统给进程分配资源,具体是哪些资源呢_技术交流_牛客网

进程间8种通信方式详解

进程间8种通信方式详解_在努力!-CSDN博客_进程间通信方式

java集合之List底层实现原理

java集合之List底层实现原理_m0_37885223的博客-CSDN博客_list底层实现原理

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卧龙不言

欢迎关注java基础笔记公众号

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值