输入:independent
输出:ddeeeinnnpt
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.next();
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length - 1; i++) {
for (int j = 0; j < chars.length - 1 - i; j++) {
if (chars[j] > chars[j + 1]) {
char temp = chars[j];
chars[j] = chars[j + 1];
chars[j + 1] = temp;
}
}
}
System.out.print('#');
for (int i = 0; i < chars.length; i++) {
if ((chars[i] >= 'a' && chars[i] <= 'z')
|| (chars[i] >= 'A' && chars[i] <= 'Z')) {
System.out.print(chars[i]);
}else {
System.out.print('#');
}
}
}
}
输入:Test1ng-Leet=code-Q!
输出:Qedo1ct-eeLg=ntse-T!
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.next();
int length = input.length();
char[] chars = input.toCharArray();
List<Character> characterList = new ArrayList<>();
Map<Integer, Character> specials = new HashMap<>();
for (int i = 0; i < chars.length ; i++) {
if ((chars[i] >= 'a' && chars[i] <= 'z')
|| (chars[i] >= 'A' && chars[i] <= 'Z')) {
characterList.add(chars[i]);
} else {
specials.put(i, chars[i]);
}
}
int charLength = characterList.size();
for (int i = 0; i < length; i++) {
if (specials.containsKey(i)) {
System.out.print(specials.get(i));
} else {
System.out.print(characterList.get(--charLength));
}
}
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int input = in.nextInt();
System.out.println(compute(input));
}
private static int compute(int n) {
if (n <= 2) {
return n;
} else {
return compute(n - 1) + compute(n - 2) ;
}
}
}
冒泡排序:
如果数据本来就是有序的,需要比较多少次?移动多少次?最好情况下的时间复杂度是多少?
如果是完全倒序的,需要比较多少次?移动多少次?最坏情况下的时间复杂度是多少?
平均情况下的时间复杂度?
略过
斐波那契数列
做机试的时候要考虑边界值问题
Java中的基本数据类型?int占用多少个字节?表示的数值范围?
(-2)的31次方 ~ (2的31次方) - 1
栈和队列的共同点和差异?
共同点:都是只允许在端点处插入和删除元素的数据结构;
不同点:栈是仅在栈顶进行访问,遵循后进先出的原则(LIFO);队列是在队尾插入数据,在队头删除数据(FIFO)
进程和线程之间的区别?线程模型?进程间是如何通信的?
TCP和UDP的区别?
(1) tcp是面向连接的,udp是面向无连接的
tcp在通信之前必须通过三次握手机制与对方建立连接,而udp通信不必与对方建立连接,不管对方的状态就直接把数据发送给对方
(2) tcp连接过程耗时,udp不耗时
(3) tcp连接过程中出现的延时增加了被攻击的可能,安全性不高,而udp不需要连接,安全性较高
(4) tcp是可靠的,保证数据传输的正确性,不易丢包,udp是不可靠的,易丢包
tcp可靠的四大手段:
顺序编号:tcp在传输文件的时候,会将文件拆分为多个tcp数据包,每个装满的数据包大小大约在1k左右,tcp协议为保证可靠传输,会将这些数据包顺序编号
确认机制:当数据包成功的被发送方发送给接收方,接收方会根据tcp协议反馈给发送方一个成功接收的ACK信号,信号中包含了当前包的序号
超时重传:当发送方发送数据包给接收方时,会为每一个数据包设置一个定时器,当在设定的时间内,发送方仍没有收到接收方的ACK信号,会再次发送该数据包,直到收到接收方的ACK信号或者连接已断开
校验信息:tcp首部校验信息较多,udp首部校验信息较少
(5) tcp传输速率较慢,实时性差,udp传输速率较快
tcp建立连接需要耗时,并且tcp首部信息太多,每次传输的有用信息较少,实时性差
(6) tcp是流模式,udp是数据包模式
tcp只要不超过缓冲区的大小就可以连续发送数据到缓冲区上,接收端只要缓冲区上有数据就可以读取,可以一次读取多个数据包,而udp一次只能读取一个数据包,数据包之间独立
7层网络通信模型?
http和https的区别?密钥从哪来的,http证书,双向认证过程?http 对称加密和非对称加密?
HTTPS和HTTP的区别主要如下:
(1) https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
(2) http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
(3) http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4) http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
证书认证过程参考:单向认证与双向认证
GET和POST的区别,安全方面有什么区别?
(1) GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
(2) GET书签可收藏,POST为书签不可收藏。
(3) GET能被缓存,POST不能缓存 。
(4) GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
(5) GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
(6) GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
(7) GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
(8) 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
(9) GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。
static 和 非static 内部类的区别?
(1) 是否能拥有静态成员
静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。
(2) 访问外部类的成员
静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。
(3) 静态内部类和非静态内部类在创建时有区别
//假设类A有静态内部类B和非静态内部类C,创建B和C的区别为
A a = new A();
A.B b = new A.B();
A.C c = a.new C();
反射中的Method ,JDK的源码实现?
Java中为什么需要序列化?
对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口 。
数据库事务的原理?
参考:数据库事务原理
UML图中组合关系和聚合关系?
(1) 依赖
虚线箭头
类A的某个成员函数的返回值、形参、局部变量或静态方法的调用,则表示类A引用了类B。
(2) 关联
实线箭头
类之间的关系比依赖要强
(3) 聚合
实线加空心菱形
表示集体与个体之间的关联关系
(4) 组合
实线加实心菱形
表示个体与组成部分之间的关联关系
(5) 泛化
直线加空心三角形
类与类之间的继承关系和类与接口之间的实现关系
编程题:写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class Main{
public static void main(String[] args) throws Exception {
String fileName = "aaa.txt";
String str = "ab";
int num = Count(fileName, str);
System.out.println(num);
}
public static int Count(String fileName , String str) throws Exception{
//获取文件中的字符
FileReader fr = new FileReader(new File(fileName));
BufferedReader br = new BufferedReader(fr);
StringBuffer sb = new StringBuffer();
String line;
while((line = br.readLine()) != null ){
sb.append(line);
}
String filestr = sb.toString(); //文件中的字符
System.out.println(filestr);
//统计这个字符串在这个文件中出现的次数
int num = 0;
while(filestr.length() > str.length()){
int index = filestr.indexOf(str);
if(index>-1){ //存在字符串str
num++;
filestr = filestr.substring(index+str.length());
}
else{
break;
}
}
return num;
}
}
Calcite解析sql具体是怎么做的?
实时计算的吞吐量?实时接入项目的采集代理的实现,binlog读取的相关工具,采集数据用的传输协议,大概流量是多少,设计容量是多少?
设计容量:多少任务需要配置多少机器资源
kafka客户端消费数据,客户端宕机,如何保证exactly-once?kafka是如何管理消费位置的?
Kafka的topic数变多的时候,性能会降低,从源码角度讲下原因?有什么解决办法?与Pulsar的区别?
磁盘目录过多。增加kafka的broker机器
建议每个topic创建的分区大小?如果有50台机器,根据经验应该创建多少?
HBase API,基于HBase的SQL引擎?
Phoneix
OpenTsdb这种时序数据库和普通数据库之间的区别?SQL语法差异
数据库死锁的原因,减少死锁的方法?
SparkStreaming和StructuredStreaming的区别?
Flink中的窗口算子有哪些,应用场景?
web系统界面打开非常慢,排查思路?
网络问题,sql查询分页,加一层缓存。服务端进程CPU、内存等问题
编程题:m n 求最大公约数,考虑效率问题
辗转相除法
public class Test {
public static void main(String[] args) {
int a = 12;
int b = 9;
int result = mod(a, b);
System.out.println(result);
}
static int mod(int a,int b){
if(a%b == 0){
return b;
}else{
return mod(b,a%b);
}
}
最小公倍数,就是两数乘积除以最大公约数。
HR面,主要沟通下薪资情况。
boss面,主要问做过的项目,以及对产品的理解等。