最后
我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。
下面是一个Java示例,说明如何在Redis和Redisson中使用直读缓存。
如果请求的条目在缓存中不存在,则它将由MapLoader对象加载:
MapLoader<String, String> mapLoader = new MapLoader<String, String>()
{
@Override
public Iterable loadAllKeys()
{
List list = new ArrayList();
Statement statement = conn.createStatement();
try {
ResultSet result = statement.executeQuery( “SELECT id FROM student” );
while ( result.next() )
{
list.add( result.getString( 1 ) );
}
} finally {
statement.close();
}
return(list);
}
@Override
public String load( String key )
{
PreparedStatement preparedStatement = conn.prepareStatement( “SELECT name FROM student where id = ?” );
try {
preparedStatement.setString( 1, key );
ResultSet result = preparedStatement.executeQuery();
if ( result.next() )
{
return(result.getString( 1 ) );
}
return(null);
} finally {
preparedStatement.close();
}
}
}
配置使用案例:
MapOptions<K, V> options = MapOptions.< K, V > defaults()
.loader( mapLoader );
RMap<K, V> map = redisson.getMap( “test”, options );
/* or */
RMapCache<K, V> map = redisson.getMapCache( “test”, options );
/* or with boost up to 45x times */
RLocalCachedMap<K, V> map = redisson.getLocalCachedMap( “test”, options );
/* or with boost up to 45x times */
RLocalCachedMapCache<K, V> map = redisson.getLocalCachedMapCache( “test”, options );
下面是一个Java示例,说明如何在Redis中使用Redis中的Redis使用直写缓存。
在MapWriter对象更新缓存和数据库之前,缓存更新方法不会返回:
MapWriter<String, String> mapWriter = new MapWriter<String, String>()
{
@Override
public void writeAll( Map<String, String> map )
{
PreparedStatement preparedStatement = conn.prepareStatement( “INSERT INTO student (id, name) values (?, ?)” );
try {
for ( Entry<String, String> entry : map.entrySet() )
{
preparedStatement.setString( 1, entry.getKey() );
preparedStatement.setString( 2, entry.getValue() );
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
} finally {
preparedStatement.close();
}
}
@Override
public void write( String key, String value )
{
PreparedStatement preparedStatement = conn.prepareStatement( “INSERT INTO student (id, name) values (?, ?)” );
try {
preparedStatement.setString( 1, key );
preparedStatement.setString( 2, value );
preparedStatement.executeUpdate();
} finally {
preparedStatement.close();
}
}
@Override
public void deleteAll( Collection keys )
{
PreparedStatement preparedStatement = conn.prepareStatement( “DELETE FROM student where id = ?” );
try {
for ( String key : keys )
{
preparedStatement.setString( 1, key );
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
} finally {
preparedStatement.close();
}
}
@Override
public void delete( String key )
{
PreparedStatement preparedStatement = conn.prepareStatement( “DELETE FROM student where id = ?” );
try {
preparedStatement.setString( 1, key );
preparedStatement.executeUpdate();
写在最后
为了这次面试,也收集了很多的面试题!
以下是部分面试题截图
是部分面试题截图
[外链图片转存中…(img-vyNe0Oul-1715424571025)]