sort Posts by custom user filed

So, if you want to display only posts on your homepage, which interests the logged in user, you can use the pre_get_posts-Action:

add_action( 'pre_get_posts', 'wp123234_user_specific_loop' );
function wp123234_user_specific_loop( $query ){
    if( ! is_user_logged_in() ) //Just return, if the user is not logged in.
        return;

    if( ! $query->is_main_query() ) //If its not the main query return
        return;

    if( !$query->is_home() ) //If its not the "home"-query return
        return;

    $interests = get_user_meta( get_current_user_id(), 'interests', true );
    if( empty( $interests ) ) //If the user has no interests return
        return;

    /*Now, we want to display the specific posts.*/

    //Assuming, the $interests-Array contains category-IDs
    //$query->set( 'category__in', $interests );

    //Assuming, the $interests-Array contains custom fields of posts
    $query->set( 'meta_query', array( array(
            'key'     => 'interests',
            'value'   => $interests,
            'compare' => 'IN',
        ) ) );

    //Assuming, you want to ignore sticky posts, since they might show up, although the
    //user is not interested in
    $query->set( 'ignore_sticky_posts', true );
}